タグ

ocamlに関するcooldaemonのブックマーク (4)

  • 第14回 型=命題,プログラム=証明

    MLの型と型推論 この連載でも何回か触れたが,MLやHaskellなど多くの静的型付き関数型言語には,「型推論」という機能がある。これは,プログラム中の変数や関数の型を省略しても,「もっとも一般的」な型を言語処理系が勝手に推論してくれる,という機能だ。 例えば,次のように,二つの引数xとyを受け取って,(x, y)という組を返す関数pairを定義してみよう。 > ocaml Objective Caml version 3.10.0 # let pair = fun x y -> (x, y) ;; val pair : 'a -> 'b -> 'a * 'b = <fun> # このように,pairは「何らかの型'aを持つ値と,何らかの型'bを持つ値を受け取り,'a型の値と'b型の値の組を返す」と推論される。一般に,t1 -> t2は,型t1の値を受け取って,型t2の値を返す関数の型であ

    第14回 型=命題,プログラム=証明
  • scalaz.Forall を読む - 月の塵

    ScalaScala では def で定義されたメソッドだけが多相性を持つことができ、値である関数は多相性を持つことができない。メソッドを関数に変換すると、そこで型パラメータが適当な型に特定化される。 scala> val id = identity _ id: Nothing => Nothing = メソッドの引き数に多相的な値を渡したりと rank-n 多相のようなことをしたいときにこれでは困ることがある。 scalaz の Forall は、そのようなときに Scala の型システムの範囲内で全称量化された値を扱うためのパッケージである。このパッケージには scala> val singleton = new Forall[({ type X[A] = A => List[A] })#X]{ | def apply[A] = (x : A) => List(x) | } sing

  • キャミバ様が id:ymotongpoo を木人形にされるようです - camlspotter’s blog

    事の次第 @camlspotter「めんどくせ、あいつに押し付けよ… @camloeba「おれには強く型付けされたコードが必要だ! あらゆる実験にたえうる木人形がな!ぶつぶつ‥ @camlspotter: 「キャミバ様、実はこんなものが… @camloeba「ほう… … ||||||:::::::;:::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::::|     | |::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::::::||||||| |||||::::::::::/   ●   \:::|    |:::/   ●   \::::::::::||||||| |||::::::::;;;;;;;──────;;;;;;;;|    |;;;;;;──────;;;;;;;;;;:::::|||||| |;;;;;;;

    キャミバ様が id:ymotongpoo を木人形にされるようです - camlspotter’s blog
  • 情報処理学会電子図書館

    ※情報処理学会電子図書館に収録されている「情報処理学会論文誌(ジャーナル)」の一部は,(独)日学術振興会平成17および18年度科学研究費補助金(研究成果公開促進費)の交付により作成されました。

  • 1