タグ

haskellに関するTAKESAKOのブックマーク (23)

  • 第14回 関数脳のつくり方 Second Season ~モナドで悟りをひらく~

    大手SIベンダにてSEやPMやアーキテクトとして勤務したのち,株式会社豆蔵を経て,現在は合同会社シンプルアーキテクト代表社員であり,株式会社匠Business Placeのチーフコンサルタント。主に超上流のプロセスである要求開発やオブジェクト指向,アジャイル開発のコンサルタントとして活躍中。開発の現場にこだわり,開発の現場を少しでもよくしたいと日夜奮闘している。要求開発アライアンス執行委員。著書に『オブジェクト脳のつくり方』や『eXtreme Programming実践レポート』(ともに翔泳社発行。後者は共著)などがある。 Javaなど,オブジェクト指向や手続き型のプログラミングの経験はあるけれど,関数型のプログラミングは初めてという皆様のための,そして筆者自身のための「関数脳のつくり方」シリーズのSecond Season(First Seasonはこちら)。今回は「モナド」を取り上げま

    第14回 関数脳のつくり方 Second Season ~モナドで悟りをひらく~
    TAKESAKO
    TAKESAKO 2009/10/29
     "私が勝手に関数型プログラミングの「師匠」と呼んでいるujihisa(氏久達博)氏" via http://twitter.com/kakutani/statuses/5223450059
  • Inemuri nezumi diary(2009-05)

    _ Haskell のまなびかた(2009-05-03版) わたしがはじめて Haskell の処理系を触ったのは 2004 年の春ですから、もうかれこれ 5 年の歳月がたったことになります。はやいものだなあ。当時に比べて書籍もサイトも充実してきたので、学びやすくなったとは思います。 しかし、GHC がデファクトスタンダードになりましたが、GHC の変化が著しいこと、GHC が *nix 以外のプラットフォーム(つまり WindowsMacOSX など)でバグが多いこと、ライブラリが爆発的に増えた一方でその依存性を解決する方法がまだ確立していないことなど、現在でも Haskell が使いやすい言語になってはいないと、いけがみは考えています。 そもそも、Haskell は言語自体が簡単に習得しやすいものではありません。特に、関数型言語を触ったことがない人にとっては、Haskell は難

    TAKESAKO
    TAKESAKO 2009/09/14
    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@

  • Wayang88 - LINK VIP RESMI LOGIN JOIN AGUSTUS 2024

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

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

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

    jamboree.jp 2024 著作権. 不許複製 プライバシーポリシー

  • Haskell Hackathon - lethevert is a programmer

    ちょっと経ってしまいましたが、先週の土曜にサイボウズ・ラボにお邪魔して、Haskell Hackathonという集まりに参加してきました。 12時間でHaskellの処理系を作る!というのが趣旨の会だったのですが、関係ありそうでなさそうな、CleanJの開発を進めていました。(一応、Hacleというのがあるので、Haskellの処理系を作っていたと言えなくもないのですが) 参加前の状況として、去年の秋頃にCleanJのバージョン2を作るという計画を立てて、開発をはじめていたのですが、諸事情で年末からまったく放置してしまっていた状況でした。でもまあ、成り行きでいろんなところで宣伝してしまったので、再開させないとなーとか思っていたので、参加してもいいかな?とひとりごちていたら、id:yukobaさんがいいよとぶくましてくれたので、参加してきました。 サイボウズ・ラボというのは、今回はじめて行っ

    Haskell Hackathon - lethevert is a programmer
  • Haskell Hackathon - 西尾泰和のはてなダイアリー

    これを読んでいる http://media.itc.u-tokyo.ac.jp/onoue/pub/jssst01.pdf これをPythonに移植している http://web.archive.org/web/20050420002559/www.cs.berkeley.edu/~nikitab/courses/cs263/hm.pl (scalar grep { &occursintype($type, $_); } @$nongen)はPythonで書けばlen(1 for t in nongen if occursintype(type, t))か。(変態的に書くと) 長さが0かそうじゃないかで分岐しているだけなのでany(occursintype(type, t) for t in nongen)でOK 昼ご飯ピザ befunge ず: http://mono.kmc.gr.jp

    Haskell Hackathon - 西尾泰和のはてなダイアリー
  • 今日は Haskell Hackathon ! - IT戦記

    経過をここに晒していくよ! ヽ(゚∀゚)ノウンコー! lexer を考える ここを参考に考えるよ! 今回作るやつは Unicode は考えない! オフサイドルールなし! 8 進数なし! 16 進数なし! 指数(0.23e10 みたいなやつ)なし! 文字列内の \ で改行を無効にするやつなし! コメントなし!(ちょw 全部正規表現使うよ! 工エエェェ(´д`)ェェエエ工 気にしない! 正規表現を考えるよ! var regexps = { digit: /\d/, decimal: /\d+/, float: /\d+\.\d+/, integer: /\d+/, char: /'(?:\\(?:[abfnrtv\\"']|\d+)|[^'])'/, string: /"(?:\\(?:[abfnrtv&\\"']|\d+)|[^"])*"/, symbol: /[!#$%&*+\.\/<=>

    今日は Haskell Hackathon ! - IT戦記
  • 紫ログ:Haskell Hackathon 2008に参加してみました - livedoor Blog(ブログ)

    前日に東京から帰ってきて、大阪・梅田会場(グッディ)での参戦。 朝11時〜夜11時のところを、思い切り大名出勤で午後2時から。 RuiさんのPEGライブラリを使って挑戦しました。 (東京のid:hayam*zuからのBrainf*ckで!!というムチャ振りを華麗にスルーしつつ) 変数名を認識 文字列を認識 整数値を認識 束縛を認識 関数適用を認識 1行で書けるdo({...;...;...})を認識 $ で関数適用を繋げていく記法を認識 リスト(型チェックなし)、タプルを認識 のように進めて行きました。 SICPを参考に遅延評価を組み入れようと思ったものの、デバッグにはまりすぎたので今日のところは断念。 朝ちゃんと11時から来ていれば遅延評価も出来たかも・・・ 晩は地下のHIMALAYAでカレー充。 朝11時からhackathonしている皆さん (yhara, nanki, hakobe9

  • Haskell Hackathon 2008に行ってきた - はこべにっき ♨

    昨日の3月1日に開催されたHaskell Hackathon 2008に関西会場から参加してきました.関東,関西,名古屋,ほか様々な開催地の参加者のみなさん,おつかれさまでした. Haskellの構文のパース+ちょっとだけ意味解析するのを目標としたのですが,人生で初めてのyaccにとまどっているうちに,yaccの使い方を学ぶだけで終わってしまいました.とんだyacc充です.パースはそこそこできてたので,意味解析までいきたかったなあ. 参加者のなかには,再帰とか遅延評価とかも実装完了していた方もいたそうです.すごいなぁ.もっと修行して,言語処理系とか余裕ですよとか言いたい.たぶん,言語の次は,ソースコード解析とかIRとかが流行るから,今のうちに勉強しておいたら良いかと思いました. ともあれ,今回,Perlでパーサを作る方法をいろいろ調べたので,メモがてらまとめておきます.以下でパース対象にし

    Haskell Hackathon 2008に行ってきた - はこべにっき ♨
    TAKESAKO
    TAKESAKO 2008/03/03
    ↓yappo全然違うよ!関係ないよ!
  • BeInteractive! [HaskellHackathon2008に参加してきた]

    参加者全員がHaskellの処理系を実装するという狂気のイベントHaskellHackathon2008に参加してきました。 当日日付が変わってからHaskellを勉強し始めたため、かろうじてHaskellのソースが読めるようなレベルだったことと、ActionScriptでの参加だったことで、かなりのアウェー感。周り凄そうな人ばっかりだったよ!(実際凄い) まずもって、構文解析をしようにも、俺自身がソースを適当にしか読めないため、どこがどう解析されるのが正しい姿なのかすら分からず(ここがかなりの敗因)、とりあえずHugs98のyaccファイルをASでも動きそうな感じに移植するところからはじめる。ひたすらkmyaccと格闘し、終わった(なんとなく構文解析出来るようになった)のが既に16時か17時ぐらい。構文解析できたはいいものの、出てきた構文木が意外と複雑でどう処理したもんかと悩み、結局

  • ベイエリア情報局: Haskell Hackathonに参加してきた

    元Vine SPARC開発者。2003年度未踏ユース採択者。海外でも活躍できる国際的なLinuxエンジニアになることを夢見て日で頑張っています。ウノウ株式会社にて写真共有SNS「フォト蔵」を開発中。 昨日はHaskell Hackathonに参加してきました あんまり挑戦者がいなさそうなPHPで挑んでみたのですが、蓋を空けてみると3人もいてびっくり とりあえずやったことをつらつらと書いてく Hugs 98のparse.yを持ってくる Hugs 98にparse.yがあったので、とりあえずそれを持ってくる C言語の部分をばっさり削除 parser.y parser.phpyを作成 parse.yからphpのプログラムが埋め込まれたparser.phpyを作成 y2phpy.rbというスクリプトファイルで機械的に作った これをkmyaccにかければ、parser.phpができる 字句解析器

  • λ Calculus - まずは遅延評価から : 404 Blog Not Found

    2008年02月04日07:00 カテゴリLightweight Languages λ Calculus - まずは遅延評価から うーん、まずY Combinatorというのはおじさんたちが悪かったかな。ギター習いたてでいきなりFの音を出すようなもんだから。 Haskell のリストと遅延評価が少し分かった - IT戦記 Y コンビネータって何? - IT戦記 まずは、遅延評価についてきちんとおさらいしておこう。 慌てるな、ループは急に止まらない まずは、以下の式を考えてみる。 (function(a, b, c){ return a ? b : c; })(true, 1, 1+1); 実行してみると、1となるはずだ。しかしここで重要なのはこのことじゃない。後ろの1+1が実行されるかだ。このことはどうやって確認したらよいだろうか。以下のようにしてみればいいはずだ。 var ELSE =

    λ Calculus - まずは遅延評価から : 404 Blog Not Found
  • Haskell のリストと遅延評価が少し分かった - IT戦記

    いろいろ試行錯誤をしていて JavaScript の関数を作って呼び出すのと Haskell のそれとの決定的な違いを見つけた。 それは、たぶんものすっごい単純で当たり前なことだけど、これが分かったとたんに僕の周りのピースが一気に繋がったので、恥をしのんで書く。 僕は以下のように脳内変換していて Haskell a = 1 iszero i = if (i == 0) then True else False Javascript a = function() { return 1 } iszero = function(i) { return i()/*評価は関数呼出し*/ == 0 ? True : False } // True False はこう True = function() { return true } False = function() { return false

    Haskell のリストと遅延評価が少し分かった - IT戦記
  • ナップサック問題をHaskellとScalaで - yukobaのブログ

    ナップサック問題という大昔からある有名な問題があります。怪盗が重量制限のあるナップサックにできるだけ物を詰め込んで、詰め込んだ価値を最大化する問題です。 そのための、教科書的な解法は、動的計画法を使うことです。プログラミングコンテスト(IOIやICPCなど)では非常に良く出るアルゴリズムです。 まずは、教科書的なボトムアップの解法。Scalaで書いています。 object KnapsackBottomUp extends Application { val goods = List((3,1), (4,2), (5,3)) val n = Integer.parseInt(Console.readLine) val solved = new Array[int](n + 1) for(weight <- 1 to n) { solved(weight) = goods.map( g =>

    ナップサック問題をHaskellとScalaで - yukobaのブログ
  • Haskell のリストが分からない。遅延評価も分からない。 - IT戦記

    Haskell のリストはシンタックスシュガーだらけ a = [] b = [1] c = [1,2] d = [1..10] e = [1..] f = [1,3..] g = [ x * x | x <- f ] 逆に分かりにくいので書き直す a = [] b = (:) 1 [] c = (:) 1 ((:) 2 []) d = ff 10 where ff 0 = [] ff i = (:) 1 (map (+1) (ff ((-) i 1))) e = (:) 1 (map (+1) e) f = (:) 1 (map ((+) ((-) 3 1) f) g = map (\x->x*x) f うん、なるほど ついでに map と同じ事をする関数 mymap を作ってみる mymap f [] = [] mymap f ((:) x xs) = (:) (f x) (mymap

    Haskell のリストが分からない。遅延評価も分からない。 - IT戦記
  • 「ふつうのHaskellプログラミング」読みます(1) - hogelogの日記

    Haskel Hackathlonに申し込んだ手前Haskell知らなくちゃ話になんねえので、通称ふつハス買ってきました。とりいそぎ2章あたりまで読んだので手元で試した記録のっける。 私の知識はHaskell知識はhttp://www.kmonos.net/wlog/65.html#_1549060908読んだことあるくらいです。 はろわはろわ % ledit >hello.hs main = putStrLn "Hello, World!" % runghc hello.hs Hello, World!モナドとか怖いとかはろわですらむずかしいって言ったの誰だ! (少なくとも一見)簡単じゃないか! leditは便利なcatコマンドみたいなものです。 じゃあ以下2章で例示されてるプログラムを順にやってく。 cat % ledit >cat.hs main = do cs <- getCon

    「ふつうのHaskellプログラミング」読みます(1) - hogelogの日記
  • HaskellでtoString - 西尾泰和のはてなダイアリー

    * JavaでいうtoString の作り方がわからない * 異なるクラスで同名のフィールドが定義できない 2008-01-26 - hoge1e3の日記 http://d.hatena.ne.jp/hoge1e3/20080126#p3 と書いてあったけども、showはいろんなオブジェクト?にあるよなぁと思って試してみたけどうまく動かなかったのでLingrで聞いたらできた。 http://www.lingr.com/room/haskell_hackathon_2008/archives/2008/01/28#msg-24671377 ソースコード class ToStringable a where toString :: a -> String data Pair = Pair {car::Pair, cdr::Pair} | Null | Value Int instance To

    HaskellでtoString - 西尾泰和のはてなダイアリー
  • The Haskell 98 Language Report

    Simon Peyton Jones [editor], Microsoft Research, Cambridge Lennart Augustsson, Sandburst Corporation Dave Barton, Intermetrics Brian Boutel, Victoria University of Wellington Warren Burton, Simon Fraser University Joseph Fasel, Los Alamos National Laboratory Kevin Hammond, University of St. Andrews Ralf Hinze, University of Bonn Paul Hudak, Yale University John Hughes, Chalmers University of Techn