タグ

lazy-evaluationとhaskellに関するnabinnoのブックマーク (6)

  • 正格評価と遅延評価(基本編)

    今回からスペースリークに関することに踏み入ります。 まずは正格評価と遅延評価の動作についてです。 型と動的な挙動 まず型についてはここでは触れません。Haskellの型は非常に複雑なものです。型についてメンタルモデルを構築する際もλ計算のシンプルさを念頭におくと非常に理解しやすいとは思いますが、ここでは扱いません。 なので型クラス(type class)や型パラメータ(parametric polymorphism)や型関数(type function)といったものは出てきません。 昔僕も静的な箇所と動的な箇所の違いが見えなかった感覚を少しだけ覚えていますが(スクリプト言語しか書いていないと陥りそうです)、静的な箇所とはプログラムを動作させなくても決定できるところを指すとしましょう。慣れればちゃんと項レベルと型レベルの違いはきちんとわかるものです(ここでは型レベルと項レベルの違いについても

    正格評価と遅延評価(基本編)
  • Scala ラムダ超入門 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    Scala ラムダ超入門 - Qiita
  • GitHub - takenobu-hs/lazy_evaluation: haskell lazy evaluation illustrated

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - takenobu-hs/lazy_evaluation: haskell lazy evaluation illustrated
  • Haskell基礎文法最速マスター - think and error

    見ていただけるのは嬉しいですがこのエントリは十分古いため、新しい情報へアクセスをしてください。以下のをお勧めします。 すごいHaskellたのしく学ぼう! 作者: MiranLipovaca出版社/メーカー: オーム社発売日: 2017/07/14メディア: Kindle版購入: 4人 クリック: 9回この商品を含むブログを見る 関数プログラミング実践入門 ──簡潔で、正しいコードを書くために (WEB+DB PRESS plus) 作者: 大川徳之出版社/メーカー: 技術評論社発売日: 2014/11/14メディア: 単行(ソフトカバー)この商品を含むブログ (8件) を見る みんなHaskellやろうぜ!! ということで書きました。 CやJavaRubyなど他言語を知っている人は、これを読むことでHaskellの大抵のことはマスターでき…ません。 特殊な構文が多すぎて他言語との類

    Haskell基礎文法最速マスター - think and error
  • カリー化 - Wikipedia

    カリー化 (currying, カリー化された=curried) とは、複数の引数をとる関数を、引数が「もとの関数の最初の引数」で戻り値が「もとの関数の残りの引数を取り結果を返す関数」であるような関数にすること(あるいはその関数のこと)である。クリストファー・ストレイチーにより論理学者ハスケル・カリーにちなんで名付けられたが、実際に考案したのはMoses Schönfinkelとゴットロープ・フレーゲである。 ごく簡単な例として、f(a, b) = c という関数 f があるときに、F(a) = g(ここで、g は g(b) = c となる関数である)という関数 F が、f のカリー化である。 関数 f が の形のとき、 をカリー化したものを とすると、 の形を取る。uncurryingは、これの逆の変換である。 理論計算機科学の分野では、カリー化を利用すると、複数の引数をとる関数を、一つ

  • 遅延評価 - Wikipedia

    評価しなければならない値が存在するとき、実際の計算を値が必要になるまで行わないことをいう。評価法が指示されているが実際の計算が行われていない中間状態の時それをプロミス(英: promise)や、計算の実体をさしてサンク(英: thunk)といい、プロミスを強制(英: force)することで値が計算される。一旦計算された値はキャッシュをすることが可能であり、遅延プロミスは最大で一度しか計算されないようにすることができる。ただし、Haskell の実装によっては、何度でも同じ計算を行う。 遅延評価を行う利点は計算量の最適化である。 ある関数を呼び出すとき、その関数が引数の全てを利用するとは限らない。条件次第で捨ててしまうような値を事前に準備することは非効率的である。このような場合遅延評価を行うと必要なときだけ値が計算されるので計算量を低減できる。 また同じ評価を複数回利用する可能性があるとき、

  • 1