ほげ

  • (7/6) ML 5 (miniMLインタプリタ)
    • 関数適応、パターンマッチを適当に実装
    • パターンマッチは最初ちょっと詰まったけど学校の帰り道でひらめく
      • 型推論をする言語においては、「エラーを返すときはnull値を返したりするのではなく、単純にExceptionを使うべき」という事に気づかなかった。
      • miniMLインタプリタでは環境はidentifierと値のペアのリストになっているが、Schemeでは「フレーム」というものがある。この違いの意味する所は何か?
OK: 1 + 2
OK: 1 - 2
OK: 1 * 2
OK: 1 / 2
OK: (fun x -> (x + 1)) 2
OK: (fun x -> (x + 1)) (1 + 1)
OK: (fun x y -> x + y) 3 4
OK: let a = 3 in a
OK: let a = ((fun x -> x + 1) 3) in a
OK: let rec loop n = if n = 1 then 1 else 1 + (loop (n - 1)) in (loop 30)
OK: let rec loop n = if n = 5 then n else loop (n + 1) in (loop 0)
OK: match 1 with x -> 3
OK: match 1 with 2 -> 2 | x -> 3
OK: match 1 with 1 -> 1 | x -> 2
OK: match (1, 2, 3) with (x, y, z) -> (x + y + z)
OK: match (1, 2, 3) with (x, y, z) -> (x - y + z)
OK: match [1; 2; 3] with [x; y; z] -> (x + y + z)
OK: match [1; 2; 3] with [x; y; z] -> (x - y + z)