タグ

haskellに関するcrafのブックマーク (16)

  • IO モナドと副作用 - Haskell-jp

    純粋関数型プログラミングで副作用を扱う方法Posted by Mizunashi Mana on April 05, 2020 Haskell は他のプログラミング言語には見られない特徴を多く持っている。その中の1つが純粋性だ。Haskell は純粋関数型プログラミング言語であることを、売りの1つにしている。しかし、純粋性は多くの場合表現力の縮小を招く。ところが Haskell は、IOモナドの導入により、通常のプログラミング言語と変わらぬ表現力を持てるようになっている。これは、とても驚くべきことだ。しかし、同時にこれは Haskell 入門者にとって、大きな混乱を招いているようだ。 今回は、そもそも純粋性とはなんなのか、なぜ他の言語は純粋性を担保できないのか、そして Haskell はどうやって IO モナドにより純粋性を担保しつつ他の言語と変わらない表現力を持てるようにしているのかにつ

    IO モナドと副作用 - Haskell-jp
    craf
    craf 2020/04/06
  • Haskell 解説本 小史 - golden-luckyの日記

    語圏におけるHaskellの解説には、これまで4回の波がありました。 それを思い出しながら、最後に『プログラミングHaskell 第2版』の紹介をします。 第1波 第2波 第3波 第4波 『プログラミングHaskell』が改訂されます 第2版ではプログラミングにおける型の理解が深まると思う ここで買えます 第1波 Haskell解説の1つめの波は、2006年、『入門Haskell』と『ふつうのHaskell』が出版された頃にありました。 このうち、『入門Haskell』は(おそらく)日初のHaskellです。 『入門Haskell』(2006年) 『ふつうのHaskell』(2006年) 『ふつうのHaskell』は、書名だけを見ると「特殊な言語」であるHaskellを「ふつう」に説明しているであるように思えるのですが、実はそうでもなくて、淡々と部品の説明をしていく感じの内容

    Haskell 解説本 小史 - golden-luckyの日記
    craf
    craf 2019/08/04
  • 絵で見るモナド · eed3si9n

    2012-08-21 John Wiegley さんの “Monads in Pictures” を翻訳しました。翻訳の公開は人より許諾済みです。翻訳の間違い等があれば遠慮なくご指摘ください。 2012年8月20日 John Wiegley 著 2012年8月21日 e.e d3si9n 訳 これはモナドのチュートリアルではないし、ここには数学用語も出てこない。稿は、既にモナドを一応使えるぐらいには習った人を対象とする。視覚化することで、何のために何をやっているかが明らかになるはずだ。 関数 モナドに対する直感を得る一つの方法として関数からモナドへの抽象化をたどるというものがある。関数が何をやっているのかを簡単な絵で表してみよう。Haskell の関数の呼び出しの構文を上に、同じ演算を視覚化したものを下に置いた: 関数はある値 a を投射 (map) して別の値 b を得る。中で何が起

  • HaskellでSICP3章のストリームを書いてみたらすごかった - *「ふっかつのじゅもんがちがいます。」withぬこ

    言語仕様を見て、これならSICP3章だろうと思ってやってみたら、ほとんどが2行(うち型宣言が1行)で書けてわろた。あとで解説とか書くかもしれないし書かないかもしれない。 module Main where addStream :: Num a => [a] -> [a] -> [a] addStream = zipWith (+) scaleStream :: Num a => a -> [a] -> [a] scaleStream factor = map (*factor) mulStream :: Num a => [a] -> [a] -> [a] mulStream = zipWith (*) integersStartingFrom :: Num a => a -> [a] integersStartingFrom n = n : integersStartingFrom (n

    HaskellでSICP3章のストリームを書いてみたらすごかった - *「ふっかつのじゅもんがちがいます。」withぬこ
  • 続:Haskellのfibが遅い件 - 西尾泰和のはてなダイアリー

    とても勉強になる流れなのでとりあえずざっくりとまとめる Haskellの「fib = 1:1:zipWith (+) fib (tail fib)」はとても遅い Haskellの有名なfibの定義は素朴なループでの定義に比べて格段に遅く、O(n^2.6)くらいの実行時間がかかり、N = 100000でPythonにすら負ける Togetter - 「Haskellの「fib = 1:1:zipWith (+) fib (tail fib)」はとても遅い件」 Integerの足し算のコストとかも絡んでくるのでややこしいという話など fib = 1 : 1 : zipWith (+) fib (tail fib) が遅いかどうかは、使い方に依存する - www.kotha.netの裏 fibを先頭から順に使って行った場合(例:sum (take 300000 fib))の方が、fib !! 3

    続:Haskellのfibが遅い件 - 西尾泰和のはてなダイアリー
  • 第39回 一般向けの「Haskell Platform」とインストール・ツールの「cabalコマンド」

    2010年3月22日に,Haskell Platform 2010.1.0.0がリリースされました(参考リンク1,参考リンク2)。 Haskell Platformは,その名の通りHaskellでプログラミングをするユーザー向けの開発プラットフォームです。Haskell Platformには,GHCに加え,GHCには含まれていないライブラリや,cabalコマンド(cabal-install)などのツールが収録されています。 Haskell Platformが生まれた理由 Haskell Platformは,Haskell処理系であるGHCに加え,実際のプログラミングで必要になるライブラリやツールなど,Haskellによるプログラミングを行うのに必要な環境一式を提供するものです。ただし,Haskell Platform 2010.1.0.0のリリース時点では,どのOSを使用しているかによって

    第39回 一般向けの「Haskell Platform」とインストール・ツールの「cabalコマンド」
    craf
    craf 2010/04/07
  • Haskell-mode for Emacs

    Haskell mode Haskell-mode is a major Emacs mode for editing Haskell source code. It provides syntax highlighting and automatic indentation and comes with inf-haskell which allows interaction with an inferior Haskell interactive loop such as the one of Hugs or GHCi. This release should work on any recent version of Emacs. If it doesn't, complain here, or discuss it on the mailing list. If it works

    craf
    craf 2009/10/29
    haskell-mode最新版
  • 栄光のグラスゴーHaskellコンパイルシステム利用の手引き バージョン7.8.2

    栄光のグラスゴーHaskellコンパイルシステム利用の手引き バージョン7.8.2 The GHC Team 目次 The Glasgow Haskell Compiler License 1. 参考訳 1. GHCの紹介 1.1. GHCを入手する 1.2. メタ情報: ウェブサイト、メーリングリストなど 1.3. GHCのバグを報告する 1.4. GHCのバージョン番号付け規則 1.5. Release notes for version 7.8.1 1.5.1. Highlights 1.5.2. Full details 1.5.2.1. Language 1.5.2.2. Compiler 1.5.2.3. GHCi 1.5.2.4. Template Haskell 1.5.2.5. Runtime system 1.5.2.6. Build system 1.5.3. Lib

  • 『Programming in Haskell』のスライドを翻訳(※随時更新) - Faith and Brave - C++で遊ぼう

    Programming in Haskell』の著者Graham Huttonによる、 各章の要点をまとめたスライドが以下のURLで公開されています。 http://www.cs.nott.ac.uk/~gmh/book.html とてもおもしろい内容だったので少しずつ翻訳してます。 翻訳したスライドは、以下の場所で随時公開していきます。 Programming in Haskell 翻訳に間違いがあったら教えてください。 【更新履歴】 2009/04/30 : 1〜5章を公開 2009/05/14 : コメント欄で指摘をいただいた点を修正(2〜5章) 2009/05/18 : 「6章 再帰関数」を公開 2009/05/20 : 「7章 高階関数」を公開 2009/06/22 : 「8章 関数型パーサー」を公開 2009/06/24 : 「9章 対話型プログラム」を公開 2009/07/

    『Programming in Haskell』のスライドを翻訳(※随時更新) - Faith and Brave - C++で遊ぼう
    craf
    craf 2009/06/12
  • 第29回 グローバル変数の代わりに使えるReaderモナドとWriterモナド

    Haskellでは,グローバル変数の使用による副作用の発生を防ぐため,グローバル変数として使える可能性のある機能は,IOモナドやSTモナドといった特定のモナドでしか利用できないようになっています。しかし,ときにはグローバル変数に頼りたくなることもあるでしょう。 そんなときでも,物のグローバル変数を使わなければならない場合は実はあまりありません。たいていは,より制限された何らかのモデルで代用できます。代わりに利用できる機能さえ知っていれば,グローバル変数を使わずに済むのです。 今回は,グローバル変数の代わりに使用できる二つのモナドを紹介します。 「読み取り専用」のReaderモナド プログラムの実行時に決まるような大域的な情報を,プログラムの何個所かで共有するにはどうすればよいでしょうか? 同じ値を利用する場合,その値を引数やデータ型の一部として関数から関数へと受け渡していくのが常道です。

    第29回 グローバル変数の代わりに使えるReaderモナドとWriterモナド
  • グローバル変数が欲しい理由?

    グローバル変数が欲しい理由? グローバル変数が欲しい理由っていうエントリを見まして,忙しかったのでズイブン遅くなっちゃったけど,ちょっと考えてみます. 実はコメントしているnobsunが話をした同僚ってのは私です. で,nobsunは完成したプログラムを公開してこうすればいいんじゃない的なブログを書いてますけど, これでは多分相手はナットクしないんじゃねーかなーと思うわけ. だってグローバル変数を避けて実装すりゃ,そらそうでしょうよって思うだけだもの. そうじゃなくてnobsunをはじめとしてHaskellerがグローバル変数を欲しくならないのか, それとも禁欲的に自分に制約をかけてるだけなのかを示さなきゃならんと思うわけですよ. 確かにグローバル変数が欲しいとか引数に持ち回らなきゃいけないのってイマイチとか, どっかで聞いたようなセリフだよなぁ.(^^;) いや,言いましたよワタシも.

    craf
    craf 2009/02/20
  • LINQ is Monads. リンクはモナド - 当面C#と.NETな記録

    nsharp さんに教えてもらったビデオを見てみました。ごちゃごちゃしたメモだけどもう眠いのでそのまま書き残しておきます。 http://channel9.msdn.com/Showpost.aspx?postid=358968 「LINQなんてのは、実装は適用連鎖ですが、根底にある発想は関数合成の方だったりします。」って言葉がとても気になったので。 ヒゲと帽子が似合うって話はおいといてw 関数の合成、圏論のモノイド、関数合成がモノイドを成すこと、そしてモナドを説明してくれるビデオ。でも、英語聞き取るのが難しいorz 型 A を取って同じ型 A を返す(集合 A から A への)関数全体は、関数合成、恒等関数 id (Iコンビネータですね)に関してモノイドを成す、っていう定番のお話。そして、関数合成とモナドの「>>=(bind、束縛)」は同じように「くっつけるもの」だって言ってるようです。

    LINQ is Monads. リンクはモナド - 当面C#と.NETな記録
  • Haskell for C Programmers

    Haskell Tutorial for C Programmers - Introduction Written by Eric Etheridge last updated July 4, 2005 Table of Contents Each major section has its own page. Introduction Abstract Downloads Purpose and Other Online References Relationship to Our Other Tutorials Preface and Style Notes Section I: What the Heck is Going On? Part I: Haskell's Oddity Part II: Input and Output Part III: Very Basic

    craf
    craf 2008/01/06
  • ひ日誌 - Haskell mode の indent cycle

  • C++ for Haskeller

    http://haskell.g.hatena.ne.jp/mr_konn/20061006/1160138831 Haskellから入った人には、cinとかcoutとか微妙すぎてよくないだろ、と、思ったので、適当に。 対象読者は、Haskellわかるし、C++もわかる人(意味ねー)。ネタを理解できる人です。 C++とは C++とは、以下のような特徴を持ったプログラミング言語です 参照透明(!) 出現評価(occurrence evaluation) (などといういかがわしい単語をつくる) パターンマッチできる 全く直感的でない構文 IOモナドを書くための大量のsyntax sugarがある 説明していくと長くなるので、それぞれ、おいおい必要になったときに説明するようにします。 C++の型 C++には、次の型があります。 整数 真偽値 連想配列 まあ、おいおい説明。(はやくも飽きてきた)

    C++ for Haskeller
  • はじめての圏論 その第1歩:しりとりの圏 - 檜山正幸のキマイラ飼育記

    全体目次: 第1歩:しりとりの圏 (このエントリー) 第2歩:行列の圏 第3歩:極端な圏達 第4歩:部分圏 第5歩:変換キューの圏 第6歩:有限変換キューと半圏 第7歩:アミダの圏 第8歩:順序集合の埋め込み表現 第9歩:基に戻って、圏論感覚を養うハナシとか 付録/番外など: 中間付録A:絵を描いてみた 番外:同期/非同期の結合 中間付録B:アミダとブレイド 番外:米田の補題に向けてのオシャベリ 一部のプログラミング言語の背景として、圏論(カテゴリー論)が使われたりするせいか、以前に比べれば多少は圏論に興味を持つ人が増えたような気がしなくもないような。でも、安直な入門的文書はあまり見かけないですね。もちろん、シッカリした教科書や論説はあるんですが、どうもシッカリし過ぎているような。例えば、圏の例として「コンパクト・ハウスドルフ空間と連続写像の圏」とか言われてもねぇ(この例はいい例なんです

    はじめての圏論 その第1歩:しりとりの圏 - 檜山正幸のキマイラ飼育記
  • 1