タグ

FPに関するuchida75cmのブックマーク (57)

  • 10分で学ぶHaskell - HaskellWiki

    概要 Haskellは関数型で(つまりすべてが関数呼びだしで処理される)、静的な暗黙的型付けで(型はコンパイラによって確認され、明示的に宣言する必要はない)、遅延評価(必要となるまで処理されない)の言語です。系統が近い言語として最も人気のあるのはおそらくML系の言語でしょう。(MLは遅延評価ではないですが) 最も普及しているHaskellのコンパイラは GHC です。GHCは http://www.haskell.org/ghc/download.html からダウンロードできます。GHCのバイナリは GNU/Linux、 FreeBSD、 MacOSWindows、Solarisで動作します。GHCをインストールすると、ghcと ghciという2つのプログラムが入っているのが確認できます。最初のghcの方はHaskellのライブラリやアプリケーションをバイナリコードにコンパイルします。

  • 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
  • ラムダ計算の勉強のしかた、プログラム意味論 - きしだのHatena

    先日のエントリで手続きを記述するという側面と、式を記述するという2つの側面があるということを書きました。 プログラムの理論とはなにか そして、手続きの性質として代表的な、アルゴリズムについての勉強のしかたについてまとめてみました。 アルゴリズムの勉強のしかた そこで、今回は、式を記述するという側面の勉強のしかたと、あとこの分野は自分でもまだ全然勉強してなかったので、これからどういうを読もうと思っているかをまとめてみます。 プログラム意味論 プログラムは必ずプログラム言語、少なくとも記号で記述します。*1 そこで、プログラムの勉強という点では、どのように動くかというアルゴリズムの勉強だけではなく、どのように書けるか、書いたものにどのような性質があるのかということも知る必要があります。 例えば、2005年あたりからRubyのような動的型付け言語が流行りだし、Javaなどの静的型付けの言語との

    ラムダ計算の勉強のしかた、プログラム意味論 - きしだのHatena
  • lambda式

    lambda(ラムダ)式は,(名前のない)関数を記述するものである. たとえば,ある数に1を加える関数は,lambda式を使って, (lambda (x) (+ x 1)) と定義できる.lambda式を演算子として引数を与えれば > ((lambda (x) (+ x 1)) 0) 1 のように,関数の値を計算できる. これは,通常の関数の呼出しと全く同様である. また(名前をもった)新しい関数の定義は,通常defineを用いて, > (define (succ x) (+ x 1)) などとするが,実はこれは > (define succ (lambda (x) (+ x 1))) のように,lambda式によって記述される関数にdefineで名前を定義することの便 宜上の省略形式である.なお,一般にこのような便宜的な記法のことをsyntax sugar(文法上の砂糖)という. la

  • モナドはメタファーではない · eed3si9n

    2011-05-28 Scala界の関数型プログラミング一派を代表する論客の一人、@djspiewak が 2010年に書いた “Monads Are Not Metaphors” を翻訳しました。翻訳の公開は人より許諾済みです。翻訳の間違い等があれば遠慮なくご指摘ください。 2010年12月27日 Daniel Spiewak 著 2011年5月29日 e.e d3si9n 訳 僕は今、約束を破るところだ。およそ三年前、僕は絶対にモナドの記事だけは書かないと自分に約束した。既にモナドに関する記事は有り余っている。記事の数が多すぎてその多さだけで多くの人は混乱している。しかも全員がモナドに対して異なる扱い方をしているため、モナドの概念を初めて学ぼうとする者は、ブリトー、宇宙服、象、砂漠のベドウィン (訳注: アラブ系遊牧民) の共通項を探す努力をするハメになっている。 僕は、この混乱した

  • 「モナドは象だ(Monads are Elephants)」日本語訳 — Japanese Translation of Monads are Elephants v1.0 documentation

    「モナドは象だ(Monads are Elephants)」日語訳¶ この文章は、以下の記事の翻訳です。 Monads are Elephants: http://james-iry.blogspot.com/2007/09/monads-are-elephants-part-1.html http://james-iry.blogspot.com/2007/10/monads-are-elephants-part-2.html http://james-iry.blogspot.com/2007/10/monads-are-elephants-part-3.html http://james-iry.blogspot.com/2007/11/monads-are-elephants-part-4.html JAMES IRY:ONE DIV ZERO: http://james-iry

  • 関数プログラミング入門

    2. 自己紹介 • 田中英行 (@tanakh, id:tanakh) • TopCoder (id:haskell-master) • Haskell Lover(not master!) • ICPC2004-5 世界大会 • Preferred Infrastructure勤務 – ICPC OB多数在籍 – アルバイト・インターン等、 興味のある方はご連絡を! 3. 日の内容 • 関数プログラミング入門 – 参照透明 – クロージャ – 遅延評価 – リスト処理 – etc… • 関数プログラミングにまつわる話題 – 永続データ構造 – 並行計算 – ソフトウェアトランザクショナルメモリ(STM)

    関数プログラミング入門
  • リレーショナル・データベースの世界

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • CASE式のススメ / リレーショナル・データベースの世界

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

  • Scala で Python の Generator みたいな何か(継続版) - プログラマのネタ帳

    継続を使えばこの前作った Generator のような何かを概念通りに書けそうだったので書いてみた。 ソース ソースは gist 概要は大体前回の Actor を使った版と同じ。 使い方 import scala.util.continuations.{cpsParam} import net.shomah4a.utils.generator.continuation.Generator.{gen, yld, GenParam} def main() { for (v <- gen[Int] { yld(1) yld(1) yld(2) yld(3) }) { println(v) } } main() gen 関数に引数なしの関数を渡し、その中で yld(x) した値を順にイテレートする。 この場合の結果は 1 1 2 3となる。 処理の順番は yld(1) -> println(v)

    Scala で Python の Generator みたいな何か(継続版) - プログラマのネタ帳
  • generator.scala

  • 022

    Scala 勉強会 in 渋谷 第22回 Scala の継続で Python の Generator のような何か しょうま(@shomah4a)

    022
  • http://cufp.org/

  • OpenJDK: Project Lambda

    JSR 335 (Lambda Expressions for the Java Programming Language) supports programming in a multicore environment by adding closures and related features to the Java language. The JSR has reached its Final Release; these changes to the platform are part of the umbrella JSR 337 and have been integrated into Java SE 8 (modifying the language, JVM, and library specifications). Project Lambda produced th

  • IEnumerable, IEnumerator ってドリンクサーバみたいなイメージ - is BUG Ready ?

    ツイッターの文字数制限は、思いついたことを(ここに)書きなぐろうと思わせる動機になる便利なやつである。字数制限の中で意図を伝えにくいので、とりあえず文章や絵を書いてしまえという気にさせてくれる。 ※ あくまで、脳内の4〜5次元情報を2次元化したものです。 .NET の interface は色々な用途で使用されるが、多くのインターフェースは「共通した振る舞い」を定義していて、そのインターフェースによって定義される振る舞いを理解するだけで、実装しているすべてのオブジェクトをうまく扱えうことができるようになります。というわけで、neue cc - LINQの仕組みと遅延評価の基礎知識 の挿絵をみて*1放ったツイート「IEnumerable ってドリンクサーバみたいなイメージ」について、ちょっと書き殴っておきます。 ドリンクサーバって、こういうやつですね。この絵にはボタンはありませんが、ボタンを

    IEnumerable, IEnumerator ってドリンクサーバみたいなイメージ - is BUG Ready ?
  • 継続 - Wikipedia

    のようになる[3]。この式はすなわち、値 v を引数に取り、それに4を足した値を返す関数である。実際、この後 (+ 1 2) の計算結果が v に代入されて、4を足した値が最終的に計算結果が求められるため、この関数は確かに (+ 1 2) を評価する段階での「残りの計算」の表現である。 call/cc[編集] Schemeの call-with-current-continuation (call/cc と省略される) は、その時点での継続を引数として関数を呼び出す手続きである。Schemeの言語仕様書(R7RS[4])には「もっとも単純な例」として次のコードが載っている: このコードは、真正な(終端が空リストである)リストが渡された際にはそのリストの要素数を数えて返し、そうでない場合はfalse値を返す。 goto文を持つ言語の意味論[編集] 継続の概念はgoto文を持つ言語に意味論を与

  • http://atnd.org/events/10631

    http://atnd.org/events/10631
  • ML (プログラミング言語) - Wikipedia

    ML(えむえる、Meta-Language)は、関数型言語のひとつである。現代風の関数型言語としては歴史が古いほうで、型推論機能などを持つが、デフォルトの評価戦略は遅延評価ではなく先行評価で、書き換えが可能なレコード型を持つなど、いわゆる「純粋関数型」でない特徴や機能を持つ。 自動定理証明系において、証明の道筋を関数として記述するためのメタ言語として生まれたという経緯を持ち(#歴史の節を参照)、名前はそのことに由来する。構文はISWIMの影響を受けている。 MLによってプログラマに知られるようになった機能に、型推論がある。これは、明示的に型の宣言を行わなくても、データの利用のされ方から、引数や関数の返す型を自動的に推論してくれる機能である。これにより、プログラマの負担が著しく軽減される。 標準(ないし一方言)としてStandard ML (SML) があり、その実装には、Standard

  • カリー化 - Wikipedia

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