2008-12-18 Schemeのdefineってレキシカルスコープじゃないよね Scheme OCaml Schemeの場合 Schemeのdefineはset!と似た感じになるので、変数を2回defineすると最初の値が変わる。 (define x 1) (define (f) x) (define x 2) (print (f)) ;; => 2 OCamlの場合 で、みんな大好きOCamlの場合は、二回letしても最初の値は変わらない。 let x = 1 let f _ = x let x = 2 let _ = print_int (f ());; (* => 1 *) で、何が問題なの? ボクの作ってるScheme-abcはOCaml風のdefineを採用してるんだけど、これがわりとABCと相性悪いからどうしようかなぁ、と最近迷ってたりする。 できればOCaml風のdefineは維持したいんだけど、どうしようかなぁ・・。