タグ

Haskellに関するTMTLのブックマーク (13)

  • カリー化談義 - あどけない話

    最近、スタートHaskellで「カリー化された関数のメリットは何か?」という質問が出た。そのすぐ後に、kmizuさんがカリー化の誤用に対して警鐘を鳴らしてしていた。僕からするとkmizuさんの「カリー化の定義」も誤用に思えたので、調べるとともに考えたことのまとめ。 いろんな定義 「カリー化する」という用語は、すくなくとも以下の3つの意味で使われているようだ。 部分適用という意味 これは明らかに間違い 「複数の引数を取る関数」を「一引数を取る関数のチェインに直す」こと これはkmizuさんの定義。世間でもよく使われる。 「構造体を一つ取る関数」を「構造体のメンバーを複数の引数にばらし、一引数を取る関数のチェインに直す」こと これは僕の定義。というか、Haskellコミュニティの定義。 「部分適用」の意味で使うのは明らかに間違いのなで排除。定義2と3について議論する。あとで、部分適用とは何かに

    カリー化談義 - あどけない話
  • モナド: お前はもう知っている | Webシステム開発/教育ソリューションのタイムインターメディア

    はじめに 過去に私がHaskellを学び始めた時、 真っ先に疑問に思ったことはモナドの存在だった。 当時は全くと言っていいほど理解できなかったが、 最近Haskellを学び直して ようやく理解することができた(と思う)。 という訳で、現時点での私のモナドへの理解を示すためにこの記事を書く。 ここではモナドの質が何なのか概要を示す。 正確な説明は数多あるモナドについてのチュートリアルを参照されたい。 Hellow World問題: IO, Monad, fail 新しい言語を学ぶ時、まず間違いなくHello Worldを書くだろう。 HaskellでHello Worldを書くとこうなる: この1行だけを見ると普通の命令型言語と大して変わらないように思える。 ところでHaskellには強力な型推論がある。 そのため型宣言を省略しても処理系がよしなに解釈してくれる。 ただ普通はコードの意図す

    モナド: お前はもう知っている | Webシステム開発/教育ソリューションのタイムインターメディア
  • 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 - あどけない話
  • はてなブログ | 無料ブログを作成しよう

    来年も作りたい!ふきのとう料理を満喫した 2024年春の記録 春は自炊が楽しい季節 1年の中で最も自炊が楽しい季節は春だと思う。スーパーの棚にやわらかな色合いの野菜が並ぶと自然とこころが弾む。 中でもときめくのは山菜だ。早いと2月下旬ごろから並び始めるそれは、タラの芽、ふきのとうと続き、桜の頃にはうるい、ウド、こ…

    はてなブログ | 無料ブログを作成しよう
  • 続: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が遅い件 - 西尾泰和のはてなダイアリー
    TMTL
    TMTL 2010/07/20
  • Haskell初心者の僕が試したことをまとめてみた - 岩本隆史の日記帳(アーカイブ)

    なぜHaskellに興味をもったのか 僕がHaskellに興味をもったきっかけは、『まつもとゆきひろ コードの世界?スーパー・プログラマになる14の思考法』(通称「ホスト」)でした。 ホストの第14章「関数型プログラミングについてなど」では、関数型プログラミングの特徴が4つ挙げられています。 関数そのものをデータとして捉える(ファーストクラス関数) 関数を引数として取る高階関数 同じ引数を取る関数は同じ結果となる参照透明性 参照透明性を実現するための副作用の忌避 このうち「参照透明性」が特に興味深く感じました。「同じ引数を取る関数は同じ結果となる」のですから、きっとテストが書きやすいはずです。「状態」によって結果が変わるオブジェクト指向言語ではテストが書きづらいと日頃から思っていたので、この参照透明性は福音のように感じられました。 その「参照透明性を実現するための副作用の忌避」が徹底さ

    Haskell初心者の僕が試したことをまとめてみた - 岩本隆史の日記帳(アーカイブ)
    TMTL
    TMTL 2010/07/13
  • Haskellの「fib = 1:1:zipWith (+) fib (tail fib)」はとても遅い - 西尾泰和のはてなダイアリー

    ラボの昼休みに光成さん、中谷さんとご飯をべながら話した内容を一応ざっくりとまとめておく。 発端はたしか最近Haskellを勉強の光成さんが、Haskellのかっこいいsieveは実はとても遅い(俺は Haskell の sieve についてとんでもない思い違いをしていたようだ...)という話を見て、同様にかっこいいけど遅い下記のフィボナッチ数列の定義の速度を調べてみたら2.5乗くらいのオーダーになっていたという話だったかと思う。 fib = 1:1:zipWith (+) fib (tail fib) 僕も確認するために、コマンドライン引数でNを与えられるフィボナッチ数列のN番目を求めるコードを書いた。 import System fib = 1:1:zipWith (+) fib (tail fib) main = do args <- getArgs print $ (0 *) $

    Haskellの「fib = 1:1:zipWith (+) fib (tail fib)」はとても遅い - 西尾泰和のはてなダイアリー
    TMTL
    TMTL 2010/07/05
  • モナドって結局何なのよ? — join to Monad v0.1 documentation

    モナドって結局何なのよ?¶ Haskell を勉強しようとすると必ず「モナド」ってのが出てきます。困ったものです。数学とか圏論とか関係があるらしくって、何が書いてあるんだか分からなくって嫌になってしまいます。でもね、Haskell って凄いらしいじゃないですか、格好良いらしいじゃないですか。ここはちょっとがんばって色々考えてみましょう。 そもそも Haskell って何なのよ?¶ 何なんでしょうね、Haskell って。コンピュータ言語らしいんです、あ、それは分かってると。良く挙げられる性質は次な感じ?: 関数型言語 強い型付け 遅延評価 参照透過 ここでちょっと型に関して見てみましょう。試しに Haskell の実装の 1 つである Hugs で 1 について考えてみます: $ hugs __ __ __ __ ____ ___ _____________________________

    TMTL
    TMTL 2010/06/03
  • perl & javascript - で単なる自己関手の圏におけるモノイド対象(笑) : 404 Blog Not Found

    2010年05月19日20:00 カテゴリLightweight Languages perl & javascript - で単なる自己関手の圏におけるモノイド対象(笑) 参照透過性ふいたwww 不完全にしておよそ正しくないプログラミング言語小史 1990 ? サイモン・ペイトン・ジョーンズ、ポール・フダック、フィリップ・ワドラー、デミ・ムーアの夫、ならびに動物の倫理的扱いを求める人々によって構成される委員会により、遅延評価を行う純粋な関数型言語Haskellが作られる。副作用の制御に使われるモナドの複雑さのため、Haskellには抵抗を持つ人々がいる。ワドラーは批判を和らげるために、こう語っている。「モナドは単なる自己関手の圏におけるモノイド対象だよ。何か問題でも?」 「何か問題でも」と言われた場合は、自分の問題にして解いてみることにしている。 というわけでIOモナドをJSとPerl

    perl & javascript - で単なる自己関手の圏におけるモノイド対象(笑) : 404 Blog Not Found
  • haskell - で Y Combinator : 404 Blog Not Found

    2010年05月08日18:00 カテゴリLightweight Languages haskell - で Y Combinator 404 Blog Not Found:Y combinator is forbidden in Haskell!?な、なんかおいらはな、なっとくいかねーぞー! に対して、正三郎さんから Y Combinator(Yコンビネータ)がHaskellで書けない!?: ホットコーナーの舞台裏 でも、HaskellでY Combinator(Yコンビネータ)は、書けるようね。たとえば、これ。 http://r6.ca/blog/20060919T084800Z.html せっかく実演できる環境があるのでやってみました。 LLEvalで。 newtype Mu a = Roll (Mu a -> (a -> a)) unroll (Roll x) = x -- y4h

    haskell - で Y Combinator : 404 Blog Not Found
  • Haskell で書いた HTTP サーバー - あどけない話

    Haskell で書いた HTTP サーバー Mighttpdをリリースしました。Mighty (マイティー)と読みます。興味のある人は、遊んでみて下さい。これまで Mew.org は Apache で運用してきましたが、すでに Mighttpd に置き換えています。

    Haskell で書いた HTTP サーバー - あどけない話
    TMTL
    TMTL 2010/03/10
  • 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
  • LearnBy $ Haskell $ Hand - #書評_ - Real World Haskell : 404 Blog Not Found

    2009年10月29日11:00 カテゴリ書評/画評/品評Lightweight Languages LearnBy $ Haskell $ Hand - #書評_ - Real World Haskell オライリー矢野様より献御礼。 Real World Haskell Bryan O'Sullivan / John Goerzen / Don Stewart / 山下 伸夫 / 伊東 勝利 / タイムインターメディア訳 [原著:Real World Haskell] 素晴らしい。これなら Ph. D どころか中卒でも、Haskellが頭でなく手でわかるようになる。特に モナドの説明文章って、何個か読んでみたけど、「これを紹介したい!」「これも紹介したい!」ってのが強すぎて、まずプログラミング言語の一要素として使えるようにして、体感してもらってからじゃないと、理解進まないんじゃないの

    LearnBy $ Haskell $ Hand - #書評_ - Real World Haskell : 404 Blog Not Found
  • 1