頭の悪いrec
こないだ、rec付けた時に仕方がないから()を……ってやってましたが、lazyでいいことが判明。lazyのほうが2回目以降の評価がいらないので確実にいいですね。
# let rec a = 1 and b = a;; Characters 22-23: let rec a = 1 and b = a;; ^ This kind of expression is not allowed as right-hand side of `let rec' # let rec a = 1 and b () = a;; val a : int = 1 val b : unit -> int = <fun> # let rec a = 1 and b = lazy a;; val a : int = 1 val b : int lazy_t = <lazy>
これでまたパーサライブラリ書き直し……次々と新テクニック(←私にとっての)が出てきて一向に進まないorz
賢い人なら全部お見通しなんだろーなー。
ちなみにこのgoogle:This kind of expression is not allowed as right-hand side of `let rec'は、OCamlの不親切極まりないエラーメッセージの象徴?の様子。