タグ

Haskellに関するkesnkeのブックマーク (18)

  • GitHub - kazu-yamamoto/recursion-drill: Drill to study recursive programming in Haskell

    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 - kazu-yamamoto/recursion-drill: Drill to study recursive programming in Haskell
  • LinuxLinks

    This article benchmarks the DreamQuest N95 Mini PC. The tests are run using the Phoronix Test Suite unless otherwise stated. Read more

    LinuxLinks
  • もうちょっとだけモナド

    第7回 スタートHaskell2 (最終回) まだまだモナド (Reader, Writer, State, Error, ...) 発表資料

    もうちょっとだけモナド
  • GHC でスタックトレース - あどけない話

    これまで GHC では、スタックトレースを取ることが有効なデバッグ方法ではなかった。 なぜなら遅延評価では、(再帰であってもなくても)末尾呼び出しは単なるジャンプになるから、スタックを使わないのである。スタックに戻る場所を積むのは、case と of の中で評価される式だけだ。(つまり、ここは正格に評価される。) この問題を解決するために GHC 7.4.2 から、わざわざスタックにログを残して、スタックトレースが取れるようになった。すなわち、最新の Haskell Platform をインストールしていれば、この機能を使えるということだ。 例として、以下のプログラムを考えよう。 module Main where main :: IO () main = print $ foo 3 + 1 foo :: Int -> Int foo x = x * 2 + bar x bar :: In

    GHC でスタックトレース - あどけない話
  • Haskell(GHCi)の:printが面白い - 西尾泰和のはてなダイアリー

    Haskellって、変数に束縛されている値が「評価されている」と「されていない」の状態を持っていて、それがグローバルにあちこちから共有されているから「どれくらいの計算量で終わるか」みたいな議論になるとイメージが掴めなくて困っていた。確認する方法があればいいのになぁ、でも、ないんだろうなぁと、諦めていたが、GHCiである程度できることがわかった。面白いじゃんこれ。 まずこんなソースコードを用意してみる。これは「リストを結合した時点で前半のリストは評価されるのか否か」を実験するためのコード。以前議論になったときに、僕の主張としては「前半を評価しないでも『xsの先頭1個と「xsの残りとysを結合したもの」のcons』を返せば良い。きっとその実装になってるだろう」というものだったのだけど、今までは挙動を観察する方法を知らなかったので議論止まりだった。 xs = [1, 2, 3] ys = [4,

    Haskell(GHCi)の:printが面白い - 西尾泰和のはてなダイアリー
  • Haskell Day 2012に行ってきました - Logic Dice

    Haskellについてもっと知りたい! と思い、Haskell Day 2012に行ってきました。 すごいHaskellたのしく学ぼう! 作者: Miran Lipovača,田中英行,村主崇行出版社/メーカー: オーム社発売日: 2012/05/23メディア: 単行(ソフトカバー)購入: 25人 クリック: 580回この商品を含むブログ (73件) を見る 幅広く、開発環境の設定から応用まで、自分のHaskell力が圧倒的に不足しているせいで理解できたことの方が少ないですが、入門書を読み終わった後の道しるべが見えました。 それぞれの発表で印象に残った点と、簡単な可能を交えて今日の発表内容を紹介します。 すごいHaskell楽しく学ぼう裏話 スライド - http://tanakh.jp/pub/haskell-day-2012-05-27.html#1 没案:「Haskellやらないか

    Haskell Day 2012に行ってきました - Logic Dice
  • Blogger

    Google のウェブログ公開ツールを使って、テキスト、写真、動画を共有できます。

  • GHCi debugger を使ってみた - khibino blog

    Haskell Advent Calendar 2011 のためのエントリです。 最近、会社でも Haskell を開発のメンバーで使っていくことに正式に決まりました。 Haskell のプログラムをデバッグするときにデバッガーのようなツールを使うことが できるのか社内で質問されたので調べてみました。 GHCi debugger 公式のドキュメント http://www.haskell.org/ghc/docs/7.0.4/html/users_guide/ghci-debugger.html や その翻訳 http://www.kotha.net/ghcguide_ja/7.0.4/ghci-debugger.htmlを 参考にしながら試してみて、私なりに理解した内容を紹介しようと思います。 mkothaさん、すばらしい翻訳をありがとうございます。 さっそく、GHCi debugger

    GHCi debugger を使ってみた - khibino blog
  • 48時間でSchemeを書こう - Wikibooks

    Web上にあるほとんどのHaskellチュートリアルは言語についてのマニュアルのような教え方をしようとしているようです。それらには言語の文法、概念が少し載っていて、読者に対話環境でいくつかの簡単な関数を作るように指示します。よく機能する有用なプログラムの書き方は大抵最後にまわされるか、そもそも省かれていたりします。 このチュートリアルは違う方針を取ります。コマンドライン引数解析から始めて、完全に機能するR5RS Schemeのかなり大きなサブセットの実装まで進みます。道すがら、Haskellの持つI/O、mutable state、dynamic typing、エラー処理、そして構文解析機能を学びます。このチュートリアルを終える頃には、あなたはHaskellとScheme両方がかなり良くわかるようになっているはずです。 このチュートリアルの対象読者は主に以下の2種類です。 LispかSch

    kesnke
    kesnke 2011/06/19
    面白そう。あとでやってみる。
  • Yesod勉強会

    Yesod勉強会 http://partake.in/events/5f27d86f-0211-4af4-9a9e-5f123056e44e での発表資料です。Read less

    Yesod勉強会
  • 2011年に Haskell を始める人のために - あどけない話

    適切な一歩を踏み出すか否かは、大きな違いを生みます。この記事では、2011年に Haskell を始める人のために、著者が考える最適な入門方法を示します。 Haskell Platform をインストールする 昔人気のあった Hugs は、もう保守されていません。現在は、GHC の時代です。GHC とライブラリをパッケージ化した Haskell Platform をインストールして下さい。 インタープリタが使いたい場合は、付いてくる ghci を使います。 コンパイラ -- ghc インタプリタ -- ghci スクリプト -- runghc GHC マニュアルの日語訳もあります。 プログラミングHaskell 次に、プログラミングHaskellを読んで関数プログラミングの「こころ」を理解しましょう。 プログラミングHaskell 作者: Graham Hutton,山和彦出版社/メー

    2011年に Haskell を始める人のために - あどけない話
  • QAで学ぶMonad - あどけない話

    この記事は、Monad でつまづいた Haskeller のための Monad 再入門です。 Monadとは何ですか? Monad とは、単なる型クラスの一つです。難しいという風評もありますが、それ以上でもそれ以下でもありません。 この型クラスのメソッドは、return と >>= です。 class Monad m where (>>=) :: m a -> (a -> m b) -> m b return :: a -> m a つまり、以下を満たす型の集合が Monad です。 m a で表現できるように一つの型変数を格納するコンテナ型 >>= と return を実装 return は新しいコンテナを作り、>>= は二つのコンテナを合成します。 Monad のインスタンスは失敗系と状態系に大別できます。以下に代表的なインスタンスを示します。 失敗系: Maybe、[] (リスト)

    QAで学ぶMonad - あどけない話
  • 数当てゲーム in Haskell - 純粋関数型雑記帳

    純粋関数型言語を使う上でもっとも問題となるのはやはりIOだろう。 現在用いられている方法はおおよそ3つある。 ストリーム モナド 一意性型付け Haskellは主にモナドを使うわけであるが、 入出力が文字列に限定される場合はinteract*1で 簡単にモナド→ストリームの変換ができる。 そこで、コンソールアプリ習作の大定番、 数当てゲームをHaskellで実装してみた。 (実装してみたというか、ちょっと前に作ったネタだけど) ストリームIOである。 見てもらえば分かると思うが、むちゃくちゃ簡潔。 数当てゲームというものが見事に"記述"できている のが分かると思う。 今まで触った言語の中でもきわめて短い部類にはいるのではなかろうか。 module Main(main) where import Random main = do ans <- randomRIO (1,100) intera

    数当てゲーム in Haskell - 純粋関数型雑記帳
    kesnke
    kesnke 2011/04/09
    Haskellによる簡潔な数当てゲーム
  • Lazy I/O must go! - Iteratee: 列挙ベースのI/O - 純粋関数型雑記帳

    最近ちょっと気になるiterateeを勉強したので、日語の解説を書いてみます。と言いつつ、大部分が The Monad.Reader Issue 16 *1 からの引用です。 はじめに Iterateeと呼ばれる新たなI/Oの抽象化手法が、最近にわかに広まりつつあります。既存のI/Oが抱える問題を解決するべくOleg Kiselyovによって2008年頃に提唱されたiterateeは、新しい高性能webフレームワークsnap *2 や、hyena *3 で利用されています。また、HackagDB上にて、iterateeパッケージ*4、およびiterateeを利用できる様々なパッケージ *5 *6 *7 *8 が公開されています。 しかし、ドキュメントの少なさなどからiterateeがどういうものなのかよく分からないという人も多いようです。そういうわけなので、iterateeを易しく解説し

    Lazy I/O must go! - Iteratee: 列挙ベースのI/O - 純粋関数型雑記帳
  • One-liner in Haskell - 純粋関数型雑記帳

    Haskellを現場言語にするために、こんなものを作ってみました。 hoe: Haskell One-liner Evaluator (名前には深い意味はありません。) Haskellでワンライナーをやろうという誰得なツールです。誰得ですが、ワンライナーでも、型があると便利なんではなかろうか、型を元にユーザの望みの動作が大体決定できるんではなかろうか、という発想を元に作られました。 Haskellのワンライナーは、ghc -e でも評価できますが、これは (Show a) => a か、 (Show a) => IO a な型しか評価できません。hoeでは、String -> String など、もっと色々な型を評価できます。そして、その型に応じていい感じの動作が自動的に選択されます。 例えば、idを入力すると、入力がそのまま出力されます。 $ cat tmp Hello, Haskell

    One-liner in Haskell - 純粋関数型雑記帳
  • Parsec, 高速なコンビネータパーサ

    文書は次に掲げる URL で示される文書の部分的な邦訳です。 http://www.cs.uu.nl/people/daan/download/parsec/parsec.html Parsec, 高速なコンビネータパーサ Daan Leijen University of Utrecht Dept. of Computer Science PO.Box 80.089, 3508 TB Utrecht The Netherlands daan@cs.uu.nl, http://www.cs.uu.nl/~daan Parsec, 高速なコンビネータパーサ Daan Leijen University of Utrecht Dept. of Computer Science PO.Box 80.089, 3508 TB Utrecht The Netherlands daan@

  • Parser Combinatorというもの(その2) - 純粋関数型雑記帳

    このページにはいわゆる解説記事を載せるつもりは無かったのだが、 (たいていは他にもっとうまい説明のページがあるだろうから…) どうやらこれがそうなってしまいそうである。 もっとまともな解説は http://sky.zero.ad.jp/~zaa54437/programming/clean/CleanBook/part2/Chap5.html こちらをどうぞ。(って人のページなんだけどな…) 概要 パーザコンビネータはプリミティブパーザと パーザ同士を組み合わせるコンビネータとからなる。 小さいパーザを組み立てて最終的なパーザを作り上げるのである。 パーザ パーザはいろいろなものが考えられるが、 ここでは単純に、文字列を引数にとり、 解析したもの+残りの文字列を返す関数であるとする。 type Parser a = String -> (a,String) Stringもパラメータ化すると

    Parser Combinatorというもの(その2) - 純粋関数型雑記帳
  • 本物のプログラマはHaskellを使う:ITpro

    筆者 shelarcy Haskellは,関数型プログラミングというジャンルに属する言語です。Haskellや関数型プログラミングを題材に物事を見ていくことで,今まで思いもよらなかったような未知の世界を知ることができるでしょう。 プログラミング言語を学ぶという行為には, 言語の基的な文法や考え方を理解する 言語の文化圏で広く使われている考え方に親しんでその言語らしい書き方を習得する 単に言語を使ってできること以上の知恵を学ぶ の3段階があります。この連載では,三つ目の段階を目標に,Haskellプログラミングの世界を一つひとつ丁寧に紹介していきます。 更新は毎月第1水曜日(1月のみ第2水曜日)

    本物のプログラマはHaskellを使う:ITpro
  • 1