タグ

Haskellに関するku-kai27のブックマーク (18)

  • 最適化コンパイラ屋がHaskellの副作用について考えてみる - ブートストラッピングでコンパイラを作る日記

    Haskellに副作用があるのか?というのは難しいテーマだと思いますが、少なくとも最適化理論での一般的な「副作用」の定義ではHaskellは全く副作用がない言語と言えると思います。 理論的に美しいという点がHaskellの設計の一番重要なところだと思うのですが、バックエンドの泥臭い話も面白いかもと思ったので書いてみます。 私は主に手続き型言語の最適化をやっていて関数型言語は詳しくありませんので、見当違いな事を書いていたら指摘して下さい。 まずは副作用の定義の為に「データ依存関係」(Wikipedia:依存関係)の説明をします。 ある変数xを使用・定義する二つの文を考える時、その評価順序関係には以下の4種類があり、それぞれの関係を以下のように呼びます。 真の依存 x = ... ... ... = x 逆依存 ... = x ... x = ... 出力依存 x = ... ... x =

    最適化コンパイラ屋がHaskellの副作用について考えてみる - ブートストラッピングでコンパイラを作る日記
  • RubyでMabyeモナドを実装してみた。 - このブログは証明できない。

    最近、Haskellやってません。今日は、Scalaの基文法を読んでました。いいですね、Scala。いや、それよりHaskellを。モナド。モナド、意味わからん。理解しなくても使える気もしますが、それもなんだか気持ち悪い。モナドをある程度(圏論まで踏み込まず)理解するには、どうすればいいでしょうか。 Maybeモナド?それ、Rubyでできるよ。え、できるの?できるかな?やってみましょう。やりましょう。 失敗するかもしれない処理をうまいことやってくれるMaybeモナド。まず、Haskellで。サンプルコードは、「あどけない話」(Haskellと言えば!)から。 Haskell とモナド - あどけない話 db = [("alice", [("title", "Ms."), ("job", "sales")]), ("bob", [("title", "Mr."), ("job", "eng

    ku-kai27
    ku-kai27 2010/09/18
    モナドをRubyに。
  • メッセージ。 - [技術] Haskellを詳しく知らないプログラマさんにHaskellをどう説明するか

    ちょっと人と会ってHaskellについて説明する機会があって。そのときはうまく説明できなかったのだが、帰り道に「ああ言えばよかったなぁ」と後悔した。そういうことはよくあるのだが、とりあえず今日の件をここに書き下しておく。 Haskellは、ほかのプログラミング言語と比べて一段抽象的にプログラミングができますが、逆に言えば一段抽象的にしかプログラムが書けないということでもあります。ここで「一段の抽象化」と言ったのがまさに「遅延評価」です。 Haskellでは一段抽象的にプログラムを書けるので、つまりコーディングが簡潔になります。コードの可読性は高くなりますし、「Cで書くよりRubyで書くほうが簡単」なのと同じように、「Rubyで書くよりHaskellで書くほうが簡単」になります(少なくとも理論上は)。 しかし一方で、基的にHaskellでは一段抽象的にしかプログラムが書けません。これは、H

  • 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
  • tmaeda 日記

    興味の対象は、各種プログラミング言語(Ruby,LISP,Objective-Cなど)、WebObjects, rails, LinuxMySQLMacなどです。興味の対象は、各種プログラミング言語(Ruby,LISP,Objective-Cなど)、WebObjects, rails, LinuxMac数学音楽、写真(特に VR)、などです。ツッコミは短く鋭く愛を込めて(出典:たださんの日記)。リンクはどうぞご自由に。 アンテナでの更新チェックには、antenna.lirs か、index.rdf をご利用ください。 _ Haskellのたらい回し関数をアセンブラで見てみる 今日の関数型言語勉強会での一幕。 ふつうのHaskellプログラミング ふつけるのp.121にあるたらい回し関数を アセンブラで見てみる。 -- tarai.hs main = print (tara

  • if を追放する - Life Goes On

    Kコンビネータと真偽値に関する話題が挙がっていたので、それを使って何か書いてみようと思いました。 条件分岐と言えば FizzBuzz。以下のようなプログラムを考えます。 main = mapM putStrLn [ max (show n) $ fizz n ++ buzz n | n <- [1..100] ] fizz n = if mon n 3 == 0 then "Fizz" else "" buzz n = if mon n 5 == 0 then "Buzz" else "" まずは以下のように if' を定義しますが、これだけだとまだあまり変わっていません。 Haskell 標準の Bool 型を使っているし、パターンマッチで結局 if 相当のことをやっているからです。(ポイントフリーで書けない!!) fizz n = if' (mod n 3 == 0) "Fizz" "

    if を追放する - Life Goes On
  • 関数型プログラマにとっての副作用 - ヒビルテ(2009-12-18)

    λ. 関数型プログラマにとっての副作用 「Haskell に副作用なんて、あるわけないじゃん。大げさだなぁ」(死亡フラグ)と思っていたけれど、HAMA#3の話をみて自分の考え方を整理できた気がするので、ちょっと書いてみる。 入出力は副作用? 命令型プログラマに説明するときの便法としては、kazuさんの説明は確かに効率が良いとは思うものの、自分がこの説明をするのには結構抵抗がある。 どこに抵抗があるのかというと、その背後にある「入出力するなら副作用がある、Haskellは入出力する、だからHaskellには副作用がある。」というような考え方。 この考え方では、言語がどのようなものであろうと、最終的に実行時に計算機上の現象として入出力が発生すれば、副作用が存在するということになってしまう。 しかし、関数型プログラマにとって、副作用とはあくまでも言語や式の性質であって、実行時に計算機上で発生する

  • Graham Hutton著、山本和彦訳「プログラミングHaskell」: ホットコーナー

    ブログ(iiyu.asablo.jpの検索) ホットコーナー内の検索 でもASAHIネット(asahi-net.or.jp)全体の検索です。 検索したい言葉のあとに、空白で区切ってki4s-nkmrを入れるといいかも。 例 中村(show) ki4s-nkmr ウェブ全体の検索 ASAHIネット(http://www.asahi-net.or.jp )のjouwa/salonからホットコーナー(http://www.asahi-net.or.jp/~ki4s-nkmr/ )に転載したものから。 --- 今年ももう12月になっちゃったよ~。早く書かないと、今年が終わっちゃ うよ~ということで、がんばって書く。 http://iiyu.asablo.jp/blog/2009/11/20/4707070 Haskellナイト、Graham Hutton著、山和彦訳「プログラミングHaskell

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

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

    第14回 関数脳のつくり方 Second Season ~モナドで悟りをひらく~
  • SICP関数型言語の勉強に「計算機プログラムの構造と解釈」を読もう - ひげぽん OSとか作っちゃうかMona-

    計算機プログラムの構造と解釈posted with amazlet on 06.04.15 Gerald Jay Sussman Julie Sussman Harold Abelson 和田 英一 ピアソンエデュケーション (2000/02) 売り上げランキング: 56,404 Amazon.co.jp で詳細を見る 自分が「計算機プログラムの構造と解釈」というを勉強していった過程をまとめています。 この質は、翻訳の悪さでも難しい数学でもないです。 なんと伝えたらよいのだろうか。 全部読み終えたときにまとめたいと思います。 →読み終わったのでまとめました。「「計算機プログラムの構造と解釈(SICP)」を読み終えて」 読み終えたら次のステップとしてはOn Lispなどがおすすめです。 目次 関数型言語の勉強にSICPを読もう - (1) SICPを読み始めた理由 関数型言語の勉強に

    SICP関数型言語の勉強に「計算機プログラムの構造と解釈」を読もう - ひげぽん OSとか作っちゃうかMona-
  • あなたのソースを汚くして生産性も下げている、たったひとつの間違い - よくわかりません

    この内容には私も全面的に賛成で、クラスやフィールド、メソッド、名前空間など、とにかく文字として表れる名前には、必ず、例外なく、正しく誤解のない命名を徹底することが非常に重要だ。 http://blog.livedoor.jp/lalha/archives/50261226.html 先のエントリは、danさん*1やlalhaさんにまで言及いただき大変光栄で、なにより多くの人に読んでもらえた。多謝。 一方で、自分で読み直すと「先のエントリ」は、いくぶん観念的でいまいちよく分からないところもあるかなと思った。というわけで、より実践に結びつきやすいように、「何に気をつければいいのか」「どういう考え方でコードを書けばいいのか」を書いてみる。 lalhaさんがエントリで強調したかったという (1) 適当に書いたコードは後でとても大きな被害をもたらす可能性が高い への包括的な対策であり、 (2) たく

    あなたのソースを汚くして生産性も下げている、たったひとつの間違い - よくわかりません
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • プログラム工学VI 授業関連資料

    重要:プログラム工学演習VI単位取得について レポート提出状況を更新した.これを見ると分かるが,プログラム高額演習VIの単位取得要件を満たしていない学生が,かなりいる.第3回までのレポート及び口頭試問については,12月20日までに問題点を解消しておかないと単位を取得することはできない. 重要:口頭試問について プログラム工学演習VIでは,第1~3回のレポートについて口頭試問を受けることが必須である.これまでに口頭試問を受けていない学生で,プログラム工学演習VI単位取得の意志がある者については,特別に12月20日に口頭試問を実施するので,必ず出席すること. これを逃すと,口頭試問の機会はない. 来週の演習日が12月21日になっていたのを,12月20日に訂正した. 補講期間中にも演習を行う予定になっていたのを,実施しないことにした. 2002年11月29日 レポート提出状況を更新した. 200

  • プログラム・プロムナード

    会誌「情報処理」連載の「プログラム・プロムナード」(2002年4月〜2005年3月掲載)と「Haskellプログラミング」(2005年4月〜2006年3月掲載)はどなたでもご覧になれます。ファイルはすべてPDF形式です。 「Haskellプログラミング」に掲載されたプログラムは http://www.sampou.org/haskell/ipsj/ から取ることができます.

  • 人力検索 - 関数型言語(プログラミング言語Scheme, Haskellなど)を勉強しようと思っています。 関数型言語の勉強方法

    関数型言語(プログラミング言語Scheme, Haskellなど)を勉強しようと思っています。 初心者にも関数型言語のメリットや考えかたがスラスラ分かる勉強の材料を教えてください。 言語の習得よりも、関数型言語の考え方の習得に重きを置いています。 例えば - このを読め - このサイトを読め のように、入門から実用レベルまできちんと筋の通ったものをお願いします。 ちなみに 以前Schemeを勉強しましたが末尾再起辺りでなんとなくうやむやになってしまいました。 あと「計算機プログラムの構造と解釈」は僕には難しすぎでした。

  • A Gentle Introduction to Haskell, Version 98

    Paul Hudak, Yale University John Peterson, Yale University Joseph Fasel, Los Alamos National Laboratory September 28, 1999 翻訳:山下 伸夫 <nobsun@sampou.org> これは、「やさしい Haskell 入門 (バージョン98)」のHTMLバージョンです。 目次要約 イントロダクション 値、型、その他の有用な概念 関数 case 式とパターン照合 型クラスとオーバローディング 再び、型について 入出力 標準の Haskell クラス モナド 数 モジュール 型付けの落し穴 配列 この先の学習 参考文献 目次 このHaskell Tutorialのマスター文書は、 haskell.orgにあります。このレポー トの訂正や変更はすべてそこに反映されるようになっ

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

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

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