Javaslang
とかScala
のRightProjection
みたいなのは省略flatMap
とかfor
とかap
みたいなのも省略extends
とかsuper
も省略- 右優先とする
- 両方ない、もしくは両方ある状態の
Either<L, R>
のインスタンスは生成出来ない様にせよ
以下のdef
の部分はあえて情報量を減らしているが、Function
に明記する方がわかりやすいはず
def isEven = {
}
def toResultForInt = {
}
def toResultForError = {
}
Function<???, ???> isEven = {
}
Function<???, ???> toResultForInt = {
}
Function<???, ???> toResultForError = {
}
- String の数値を渡すと Integer に解析する関数を作成せよ
0-9
以外の文字を含む場合はparse error
を表す0
-9
の範囲外の数値(2桁と負数)の場合はrange error
を表す- それ以外の場合は Integer として返却
- 戻りの型は後述
- その
Either
の右側に+ 1
を行う - 処理結果を
ResultType
に変換する- 数値の場合は
EVEN
orODD
- 解析エラーの場合は
PARSE_ERROR
orRANGE_ERROR
- 数値の場合は
- 解析関数の戻りは以下のパターンを用意せよ
Either<String, Integer>
Either<ResultType, Integer>