タグ

技術情報とラムダ計算に関するyoshihiro503のブックマーク (4)

  • 未来言語Agda - 数学猫の生活と意見

    最近Agdaを触る機会があったのだが、Agdaこそ未来のプログラミング言語ではないかという気がしてきた。ここでは行列の転置をする関数を定義することで、Agdaでのプログラミングがどんなものか紹介したい。その前に一言:Agdaは定理証明系として紹介されることが多い。これはAgdaにとって不幸なことだ。確かにAgdaの型システムは強力なので、例のカリーハワード同型により、型を命題、プログラムを証明とみなすことができる。ただし、私の印象ではAgda上は数学の証明をしやすいようにはそんなにはできていない。Agdaで証明するには、ある型をもつ定数なり関数を定義することになるわけだが、定義した関数がその型を持っているかことを型チェッカに説得するために、型チェッカの詳しい挙動について理解していなければならない。むしろ、Agdaは依存型をもつプログラミング言語と思った方がよいと思う。依存型とはなにかは例を

  • Agda 練習 - zyxwvの日記

    あまりわかってないけど、とりあえずいくつか適当な関数を書いたのでメモ。依存型うける(気がする)。 agda2 の emacs モードが使いこなせないのと関数を実行する方法がわからんのが問題である。 module NList where data Nat : Set where zero : Nat succ : Nat -> Nat _+_ : Nat -> Nat -> Nat zero + n = n (succ m) + n = succ (m + n) _*_ : Nat -> Nat -> Nat zero * _ = zero (succ zero) * n = n (succ m) * n = m + (m * n) data List (A : Set) : Nat -> Set where [] : List A zero _::_ : {n : Nat} -> A ->

    Agda 練習 - zyxwvの日記
  • Lambda Tamer

    The Lambda Tamer project tackles the issues surrounding computer formalization of programming languages and their tools, based around the Coq proof assistant. The Lambda Tamer methodology centers on higher-order and dependently-typed abstract syntax and aggressive automation. The main project output is a library of Coq definitions, theorems, and tactics in support of building certified compilers f

  • 連載:C# 3.0入門 第1回 ラムダ式 − @IT

    C# 3.0とは何か? C#も順調にバージョンアップを重ね、ついに「3.0」である。連載を開始するに当たり、前置きとしてこの連載で扱うC# 3.0とは何かを簡単に紹介しておこう。 C# 3.0は、動的かつタイプセーフなオブジェクト指向プログラミング言語である。「動的」とは、実行するまで内容が確定しない要素が多いことを意味し、「タイプセーフ」とは、あらゆるデータに「型」が存在し、コンパイル時、あるいは実行時にそれが厳格にチェックされることを意味する。そして「オブジェクト指向プログラミング言語」とは、データとプログラムの入れ物である「オブジェクト」を前提とした言語であることを示す。 しかし、これらの特徴はC# 2.0から継承されたものであって、必ずしもC# 3.0固有のものではない。C# 3.0ならではの特徴とは何だろう? 筆者の個人的な印象だが、C# 3.0は言語が持つ個々の機能について技術

    yoshihiro503
    yoshihiro503 2008/04/07
    関数型言語の特徴(ラムダ計算)が、機能としてC#に導入された
  • 1