タグ

haskellに関するchanpon0のブックマーク (4)

  • 坂梨の人生坂あり日記

    『入門Haskell』最後の問題です。 Base64(エンコード) p.144の(1)です。 (1) このBase64エンコードは「76文字以内に改行を入れる」ということが行われていません。これに対する対処を、以下の2つのアプローチで実装しなさい。 1. base64Encode関数でevalStateした結果に文字列処理を行う 2. Stateモナドが保持する状態に、「現在何文字目を処理しているか」を持っておく p.143のbase64.hsを元にして改行処理を追加します。ところでbase64.hsのcalcSuffix関数の定義の中で calcSuffix (Second n) = table !! shiftR n 4 : "==\n" calcSuffix (Third n) = table !! shiftR n 2 : "=\n" となっているのは calcSuffix (Se

    坂梨の人生坂あり日記
    chanpon0
    chanpon0 2012/10/16
    無限リストはなぜ右畳込みを使うか。
  • Haskell で関数の抽象化 - sum, product から foldl1 → foldl へ

    高階関数のメリットって何だろう? 最近、少しずつ なぜ関数プログラミングは重要か を読んでいる。しかし、なかなか理解できない。(+_+) せめて、最初の節、 「3. 関数の貼り合せ」 を読み切りるのが、今の目標。 ところで、「なぜ関数...」を読まなければ、 関数の抽象化 (パラメータ化、モジュール化、部品と合成) の流れ Haskell で言う fold 系の関数 (reduce) が導かれるまでの過程が重要 ということがわからなかった。 fold 系の関数 については、 「リスト全体に対して、何か演算を施したいときには、何だかよくわからないけれど、`foldl’ という関数を使う」 という程度の認識だった。 ^^; Ruby の inject メソッドを見たのが最初 fold 系の関数と言えば、最初に見たのが Ruby の inject メソッド。 「なんてわかりにくい動作のメソッドな

    Haskell で関数の抽象化 - sum, product から foldl1 → foldl へ
    chanpon0
    chanpon0 2012/09/21
    sum
  • もっと Haskell プログラミング | @jsakamoto

    さて今回のお題。 "My ID is 001, Your ID is 002." という入力文字列に対して、正規表現パターン "\d+" をマッチした結果に基づき、"My ID is <span class='odd'>001</span>, Your ID is <span class='even'>002</span>." という、マッチした箇所を可視化する HTML を出力する、というプログラムを Haskell で書いてみる。 余談だが、なんでこんなネタが出てきたのか、ちょっと説明。 .NET Framework 用の正規表現パターンを試行錯誤するツールとして "Sells Brothers RegexDesigner.NET" を利用させて頂いてきた(同類のツールはほかにもいくつかあるようですね)。 しかし、この手の小粒なツール類の社内での配布や告知が面倒になってきた。 そこで、

  • Haskell の Prelude にある関数の定義を読みたい - ソースコードどこ?

    chanpon0
    chanpon0 2012/08/21
    関数の検索
  • 1