タグ

functionalとmathに関するmr_konnのブックマーク (5)

  • Y combinator - Rosetta Code

    Y combinator You are encouraged to solve this task according to the task description, using any language you may know. In strict functional programming and the lambda calculus, functions (lambda expressions) don't have state and are only allowed to refer to arguments of enclosing functions. This rules out the usual definition of a recursive function wherein a function is associated with the state

    Y combinator - Rosetta Code
  • Haskell で Y コンビネータ - あどけない話

    Haskell では、Y コンビネータが作れないと誤解している人がいるので、できることを示すと同時に、これまで学んだことをまとめてみます。 遅延評価を活かした Y コンビネータ 関数名を用いた再帰を使ってよいなら、Haskell では遅延評価のおかげで、Y コンビネータを定義である Y x = x (Y x) の通りに書けます。 y :: (a -> a) -> a y x = x (y x) Y コンビネータ用の階乗を定義してみましょう。 fact :: Num a => (a -> a) -> a -> a fact = \f n -> if n == 0 then 1 else n * f (n-1) 以下のように動きます。 y fact 4 → 24 でも、この階乗は Haskell っぽくないので、入り口で分岐するように書き直してみます。 fact :: Num a => (a

    Haskell で Y コンビネータ - あどけない話
  • Leftist Heap - 言語ゲーム

    Chris Okasaki の Purely Functional Data Structures というを買ってみました。これは、副作用を使わないでいろいろなデータ構造のアルゴリズムを実装するという大変面白いで、これを読むと、副作用無しで○○が出来るわけがない!という時の○○がだいぶ減ると思います。 サンプルは Standard ML で書かれているのですが、良くわからないのでHaskell で書き直しながら読んでみます(巻末に Haskell での実装例が載ってるけど見ないふり)。 17 ページに Heap というコレクションが紹介されています。これは次の性質をもったコレクションです。 要素は大小関係を持つオブジェクト。 最小の要素だけを取り出す事が出来る。 ようするにあるリストをソートして最小の奴を取り出したいという場合、取り出す物が最小の物だけならばソートするより効率の良い方法

    Leftist Heap - 言語ゲーム
  • Agda2ことはじめ - ラシウラ

    参考は http://www.cs.chalmers.se/~ulfn/darcs/AFP08/LectureNotes/AgdaIntro.pdf とAgda2添付のexamples、そしてソースコード。 一応emacsインタフェースで、コード補完(別名、証明補助)できるUIがあるのですが、自分はまったく使ってません。 一応、こういうdependently typedな言語では、式と型の区別はないようなもので、型部分でも値や関数適用ができるため、それらを合わせて項(term)として扱うのですが、そのtermの意味で式や型という語をわざと使っています。 Agda2の基 簡単なものとして、AgdaIntroにもある、trueとfalseからなるBool型データと、その関連関数を定義しましょう。 まず、Boolデータ型 data Bool : Set where true : Bool fa

    Agda2ことはじめ - ラシウラ
  • セッション型 on Haskell - keigoiの日記

    セッション型は プロトコルを表現する型で, 15年くらい前から π計算の型理論の1つとして研究されてきました(文献リスト(一部)).並行・分散ソフトウェアの普及を鑑みるに,セッション型のような仕組みは次世代の型安全かつ表現力の高いプログラミングのための強力なツールとして役に立つと考えます. しかしその直観的なわかりやすさにも関わらず,セッション型を提供しているプログラミング言語は皆無(おそらく…)です. そこで,今 流行(?)の型レベル計算を駆使して Haskell にセッション型を導入してみました. ダウンロード 晒してみる. まだ α版 full-sessions ダウンロードページへ test.hs を ghci でロードしてください いくつかの関数は 型を見たり runS で走らせたりできます. test.hs の一部で ixdo 記法を使っているので, cabal install

    セッション型 on Haskell - keigoiの日記
  • 1