タグ

Haskellに関するnozomのブックマーク (55)

  • Real World Haskell

    Why functional programming? Why Haskell? 1. Getting started 2. Types and functions 3. Defining types, streamlining functions 4. Functional programming 5. Writing a library: working with JSON data 6. Using typeclasses 7. Input and output 8. Efficient file processing, regular expressions, and file name matching 9. I/O case study: a library for searching the filesystem 10. Code case study: parsing a

  • Haskell for C Programmers

    Haskell Tutorial for C Programmers - Introduction Written by Eric Etheridge last updated July 4, 2005 Table of Contents Each major section has its own page. Introduction Abstract Downloads Purpose and Other Online References Relationship to Our Other Tutorials Preface and Style Notes Section I: What the Heck is Going On? Part I: Haskell's Oddity Part II: Input and Output Part III: Very Basic

  • Learn Haskell

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

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

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • LambdaVM - The Haskell to Java Translator - lethevert is a programmer

    http://www.cs.rit.edu/~bja8464/lambdavm/ おお、こんなものもあるのか。

    LambdaVM - The Haskell to Java Translator - lethevert is a programmer
  • トラバースを一回にしても - lethevert is a programmer

    http://karetta.jp/article/blog/oneline/008668 http://konoe.lab2.kuis.kyoto-u.ac.jp/~hanatani/tdiary/?date=20061206 計算量が減るというわけではないんだな。 逆に、末尾再帰でなくなるせいで、空間計算量が増えるということもないわけではなかったり。 - http://haskell.g.hatena.ne.jp/jmk/20061206/1165380658 ところで、モナドもこうなっていると俄然かっこいいですね(何が?) - そうか、わかった。 tnorm t = let (r, m) = runWriter iteration in runReader r (getMin m) where iteration = unComp $ traverse (Comp . fmap tr

    トラバースを一回にしても - lethevert is a programmer
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

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

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • Haskell メモ - IT戦記

    このエントリはきっと嘘だらけだと思います Haskell を使ってみて自分が感じたイメージを文章にしてみただけです。 Haskell の遅延評価について自分の脳内を整理 Haskell は変数がない。 変数っぽくみえるシンボルは全部(?)関数だ。 だから、副作用(IOとか)のない関数は外部の状態に結果が左右されることはない。 副作用(IOとか)のない関数は引数が同じなら実行する必要はない。(要素のキャッシュ) 例 a = 1 + 1 b = a + a c = b + b main = putStrLn $ show $ cこの結果は絶対 8 だ。しかし、その求めかたは手続き型とは大きく違う。 Haskell の考え方 a も b も c も関数だ。 c の値が必要 c は b の値が必要 b は a の値が必要 a は 1 + 1 である b の最初の a を評価する。二個目以降の a

    Haskell メモ - IT戦記
  • ヒビルテ(2006-12-06)

    λ. newtypeはHaskellの仕様に不要では? 向井さんのdataとnewtypeのちがいのわかりやすい例というエントリへの便乗なのだけど、newtypeはHaskellの仕様に不要だったのではないかと私は思っている。 向井さんの例でいうと「data T2 = T2 !Int」と「newtype T3 = T3 Int」の表す領域は全く同じである。違うのは「メモリ上のデータの表現の効率」と「パターンマッチの意味」だけ。しかし、この場合にはメモリ上のデータ表現はコンパイラによる最適化が可能であろうし、そのような最適化はプログラマにとって十分透過的*1だろうから、プログラマがメモリ上の表現を明示する意味はあまり無いはず。また、newtypeで宣言した場合のパターンマッチの意味については、dataで宣言した場合でも遅延パターンを用いれば実現できる。 仮にHaskellの仕様にnewtyp

  • 第5回 ListではなくMaybeを使う意義

    Haskellを学んでいると,Maybeという型に遭遇します。 Maybeとは一体何でしょうか? なぜほかの型ではなくMaybeを使用するのでしょうか? 読者のなかにはこのような疑問を持った方もいれば,持たなかった方もいるでしょう。あるいは部分的な答えに「Haskellではこうするのだ」と納得して,そこで問いをやめてしまったかもしれません。いずれにせよ,何かを得ることを目的にHaskellを学んでいるのなら,今一度,何を知らないかを自覚し,疑問を思い起こすべきです。 与えられた情報をただ漫然と常識として受け止めてしまうと,答えとなるような知識を得ることはできません。答えを得るためには,問いが必要なのです。 今回はMaybe型の説明を通じて,そうした問いへの入り口を示したいと思います。 前回の補足 前回GHC6.6で使用する文字コードとして紹介したUTF-8Nは,標準化の議論が一時期されてい

    第5回 ListではなくMaybeを使う意義
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

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

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • 関数型言語 C++ - 兼雑記

    C++ は JS ほどじゃないにせよ、誤解されてきた言語だと思います。いや、複雑だとかいうのは誤解ではなく紛うことなき真実なのですが、その複雑さがただパラノイアから来た複雑なだけのものではなく、一応の有用性を伴うものだ…っていやそれはわかってそうな気はするので、誤解というほどのことでもないわけですが、昨今に比べて、なんか有用そうなものである、という認識は低めだったように思います。 ただ今度は、なんか関数型な雰囲気らしーぜ、というだけの単語が一人歩き気味な気がします。なんかわからんけど C++ すげー、みたいな、一昔前の Haskell が得ていたようなイヤな地位をゲットしているような気がして、それはそれで別の種類の、ある種の誤解であるように思ったのでした。 というわけでマルチパラダイム言語 C++ について、関数型言語としての機能について僕の見方を。 まず絶対に意識して欲しい部分なのですが

    関数型言語 C++ - 兼雑記
    nozom
    nozom 2006/11/25
    マルチパラダイム言語C++は、コンパイルタイムに走る関数型言語と、実行時の関数型プログラミングという2種類の関数型言語を持っている
  • sumiiの日記 - call/ccが「副作用」である理由

    http://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3acall%2fcc%e3%81%a8%e5%89%af%e4%bd%9c%e7%94%a8 (via http://d.hatena.ne.jp/flappphys/20061119#p2) おお、これは正確でわかりやすい議論ですね。call/ccが参照透明性を破壊する(ややトリッキーな)実例としては、前にちらっと書いた > (define x (call-with-current-continuation call-with-current-continuation)) > x #<system continuation> > (x 123) > x 123も、その筋ではよく知られているようです。元のcomp.lang.schemeの議論をちゃんと読んでいないので既出かもしれませ

    sumiiの日記 - call/ccが「副作用」である理由
  • Topics:SICP in other languages - CTMWiki

    Topics:SICP in other languagesFrom CTMWiki SICP, Structure and Interpretation of Computer Programs (http://mitpress.mit.edu/sicp/), is another great CS textbook that's in the works for translation. The examples in the book were originally in Scheme.

  • はてなブログ | 無料ブログを作成しよう

    もういくつ寝ると 今年のはじめにやりたいことリストを作った。今見たら50項目あるリストのうち25個が達成済みだった。ちょうど半分やりたいことをやったということだ。私にしてはまあまあの結果だと思う。満足。 やりたいことリストにあるもののうち、「〜をべたい」系は概ねクリアし…

    はてなブログ | 無料ブログを作成しよう
  • Haskell で Bowling Score:An Agile Way:オルタナティブ・ブログ

    ボーリングのスコアを計算するプログラムを設計、実装、テストせよ。 この問題は、Robert C. Martin の『アジャイルの奥義』の中でも、TDD(テスト駆動開発)的なアプローチがしばしば直感とは異なったクラス設計に行き着くことを示す例としても取り上げられている。 また、実はJUDEチームの定番の教育練習問題となっていて、新メンバーが来ると必ずこの問題を解き、良い設計とは何か、という議論をすることになっている。受け入れテストのみを示して、それを通るコードを書いてもらう。 ぼくは、この問題の回答として、かなり普通のクラス構造と名前(たとえば、FrameとかGameとか)が現れくるオブジェクト指向的な設計構造を含んだものを好む。特に第10フレームの扱い(他のFrameとの汎化関係)や、GameとFrameの集約関係に目が行く。もう1つのポイントは、ボーリングのスコア計算ルール(スペアやスト

    Haskell で Bowling Score:An Agile Way:オルタナティブ・ブログ
  • defmacro - Writing A Lisp Interpreter In Haskell

    Introduction A while ago, after what now seems like eternity of flirting with Haskell articles and papers, I finally crossed the boundary between theory and practice and downloaded a Haskell compiler. I decided to do a field evaluation of the language by two means. I was going to solve a problem in a domain that Haskell is known to excel at followed by a real world problem1 that hasn't had much ex

  • SICP | Haskell | OSS-Web

    Chat (Lingr.com) Informaiton コンセプト 注意事項 About Us メーリングリスト コメントの入力方法 RSSの配信 Daily 今日の一行(2008-11-05) Column MySQL語の旅(5/1) アクセス向上秘伝(5/9) 一風変ったHaskellλ門(6/13) SICP Answer Book (5/31) 問題3.26追加 Zope Solution Zope3 幕の内 Zopeとは なぜZopeなのか Extra JavaCube 電気の使えるカフェ情報(1/8) アーカイブ Project Looking Glass XPで楽しい人生を OSS案内所 書籍の紹介 技術者のブックマーク 読書会、勉強会 Site Info Recent Changes アクセス統計情報 関連リンク 一風変った Haskell プログラミングλ門 最近注

    nozom
    nozom 2006/10/26
    まずタイトルが良いね
  • 第3回 mapからモナドを理解する

    今回は「モナド(monad)」について説明します。モナドはHaskellの重要な特徴の一つなので,名前くらいは聞いたことがある人が多いでしょう。ただ,「モナドは難しい」という声もよく聞きます。 モナドとは一体なんでしょうか。前回,「HaskellはIOを取り扱うためにモナドと呼ばれる特別な仕組みを使用することで有名です」と書きました。Haskellは遅延評価を行うため,プログラマが処理の順番を確実に指定することができず,そのままでは入出力の処理には不向きです。モナドを使えば制御構造を導入できるため,この問題を解決できます。前回でいえば,(IO a -> IO a)にマッチする関数――finallyやprintThenAdd――を定義している部分がモナドに相当します。また,GHCiのプロンプトにもモナドが使われています。このように入出力操作を行うモナドの代表格が「IOモナド」です。ライブラリ

    第3回 mapからモナドを理解する
  • Pugs 6.2.13 preflight and GHC 6.6 : 404 Blog Not Found

    2006年10月16日14:00 カテゴリLightweight Languages Pugs 6.2.13 preflight and GHC 6.6 いいっすよ、この子達。 Pugs: Pugs 6.2.13 preflight! Partly due to $job requirements, I've delayed the release of 6.28.0 with its full metamodel integration. Instead the 6.2.13 release, due next Tuesday, offers numerous real-world related improvements: この通り、正式Releaseは一週間後ですが、すでにsvn repositoryのそれでかなりいけます。 Intel Mac Userにとってうれしいのは、GHCが

    Pugs 6.2.13 preflight and GHC 6.6 : 404 Blog Not Found