タグ

Haskellに関するterazzoのブックマーク (185)

  • Twitter の翻訳 - d.y.d.

    00:07 11/07/28 LOPSTR / PPDP 2011 LOPSTR と PPDP という共同開催の国際会議に行っていました。論理に基づく / 宣言型のプログラミングがテーマだそうです。 実況は例によって togetter.com/li/164644 にまとめてあります。 LOPSTR の方は、あまりよく知らなかったんですが、発表を聴いてみると、かなりガッツリと Prolog の言語仕様のディープなところに触れるような話があって、まるで、 C++Scala で盛り上がってる自分のTwitterのタイムラインの Prolog 版を見てるような雰囲気で楽しかったです。 Sloth 聴いた中では Sloth という Haskell のライブラリの話が一番面白かったので、帰ってから関連論文を読んでいました。 何をするライブラリかというと、書いた関数が「できるかぎり遅延評価する」も

  • スタートHaskell第0回に行ってきた+最後にやってたあの難解なLTの解説 - <s>gnarl,</s>技術メモ”’<marquee><textarea>¥

    スタートHaskell 第0回に行ってきました。 「初心者向けで環境構築から始まりハローワールド程度しかやらない勉強会、Haskellに多少触ったことのある人間が行く意味あるのだろうか……」と思いつつ行ってみたものの、予想以上に向こうの想定している「初心者」がハイレベルだったため行く意味大あり、TAPL読んでたのが役に立つくらいの内容だった(初心者の定義とは……)。 実際面白かったので、次回以降もぜひ参加したいですね。 LTの最後にやった、型から項を作る話についての解説 【注意】私はあの発表をした人とは関係ないです。しかも実際素人なので、間違ったことを書いている可能性があります!!【ツッコミ希望】 型から項を作る(@pi8027) 一部の人々のHaskellをストップしそうになったこの発表、実はそれほど難しいことはやっていない―― 正確に言うと、「何のためにやるか」「どうやってやるか」は難

  • 第0回 スタートHaskell まとめ#0

    量が多いので全部取得できないと思います。20時の段階で取得できたもの全て載せときます。 ATND: http://atnd.org/events/17468 14時半以前のツイートを、取得できる範囲でまとめました。 続きを読む

    第0回 スタートHaskell まとめ#0
  • Haskellの継続モナド(Continuation Monad)を理解するポイント - よくわかりません

    モナドのすべての継続モナドのところが簡潔で、概念とかもあまり明示的に説明してなくて理解に苦労したので、ポイントをメモ。誤りなど、乞うご指摘。 newtype Cont r a = Cont { runCont :: ((a -> r) -> r) } instance Monad (Cont r) where return a = Cont $ \k -> k a (Cont c) >>= f = Cont $ \k -> c (\a -> runCont (f a) k) 概要的なこと 継続といいつつ、Contが表すのは継続というより、CPSな関数。*1 CPSな関数は、引数に関数をとり、自分の仕事の最後でその関数(継続)を呼ぶ。 CPSな関数に、継続として別のCPSな関数を渡す、その別のCPSな関数に継続としてさらに別のCPSな関数を渡す、…の連鎖(CPSな関数のネスト)が、全体として

    Haskellの継続モナド(Continuation Monad)を理解するポイント - よくわかりません
  • 48時間でSchemeを書こう - Wikibooks

    Web上にあるほとんどのHaskellチュートリアルは言語についてのマニュアルのような教え方をしようとしているようです。それらには言語の文法、概念が少し載っていて、読者に対話環境でいくつかの簡単な関数を作るように指示します。よく機能する有用なプログラムの書き方は大抵最後にまわされるか、そもそも省かれていたりします。 このチュートリアルは違う方針を取ります。コマンドライン引数解析から始めて、完全に機能するR5RS Schemeのかなり大きなサブセットの実装まで進みます。道すがら、Haskellの持つI/O、mutable state、dynamic typing、エラー処理、そして構文解析機能を学びます。このチュートリアルを終える頃には、あなたはHaskellとScheme両方がかなり良くわかるようになっているはずです。 このチュートリアルの対象読者は主に以下の2種類です。 LispかSch

  • Haskellライブラリ入門 (2011年版) - あどけない話

    この記事では、基ライブラリである Prelude の関数をだいたい理解した人が、次に知るべきライブラリを紹介します。自由自在にリストを使いこなせ、正規表現がなくてもプログラミングができるんだなと実感した人を対象にしています。 この記事のテーマは、脱リストです。リストはとても柔軟ですが、リストで表現されている文字列は、メモリーをたくさん消費しますし、なにより遅いのです。実用的なプログラムを書くためには、必要に応じて適切なデータ構造を使う必要があります。 containers containersは、文字通りコンテナ型をいくつか集めたパッケージです。ハッシュの代替品やキューとして使えます。連想リストを使っているところは、すべて Data.Map などで置き換えることをお勧めします。 containers に入っているモジュールはすべて眺めましょう。そして、実装も読んでみましょう。(プログラミ

    Haskellライブラリ入門 (2011年版) - あどけない話
  • 2011年に Haskell を始める人のために - あどけない話

    適切な一歩を踏み出すか否かは、大きな違いを生みます。この記事では、2011年に Haskell を始める人のために、著者が考える最適な入門方法を示します。 Haskell Platform をインストールする 昔人気のあった Hugs は、もう保守されていません。現在は、GHC の時代です。GHC とライブラリをパッケージ化した Haskell Platform をインストールして下さい。 インタープリタが使いたい場合は、付いてくる ghci を使います。 コンパイラ -- ghc インタプリタ -- ghci スクリプト -- runghc GHC マニュアルの日語訳もあります。 プログラミングHaskell 次に、プログラミングHaskellを読んで関数プログラミングの「こころ」を理解しましょう。 プログラミングHaskell 作者: Graham Hutton,山和彦出版社/メー

    2011年に Haskell を始める人のために - あどけない話
  • メモ化とボックス型とグラフ簡約(Haskellとメモ化のこと その3) - 取り急ぎブログです

    業のほうが立て込んでしまって、ずいぶんと時間が空いてしまいました。 えー、ここまでのHaskellの勉強の過程で、どうゆう理由でか、あるいはどこから仕入れたのかははっきりしないのですが、Haskellではメモ化が自動、兼タダで手に入ると僕は思い込んでいたわけです。 それで色々と試してみたのがその1とその2だったわけなんですが、結果から言って、確かにメモ化されているような動きをすることもあるのですが、なんと言うか、いつでもメモ化の作用が効いているわけでもないようです。 Haskellで定義される関数は参照透過性がIOモナドな関数などの一部を除いて保証されているので、もっとアグレッシブにメモ化を進めることもできるような気もするのですが、なぜそうなっていないかは謎です。 こちらに記事を書いていない間もちょこちょこと調べてみていたのですが、一つ試してみたのが、IOArrayとIOUArrayでし

    メモ化とボックス型とグラフ簡約(Haskellとメモ化のこと その3) - 取り急ぎブログです
  • Haskellで作る超コンパクト音声認識システム

    音声認識人工知能の分野の中でも独自の進化をとげた分野で,良くも悪くもガラパゴス的と言われたりします. 特に大語彙連続音声認識を実現する既存のソフトウエアは大規模かつ複雑で,音声認識の専門家でさえも全体を理解して改良を加えることは必ずしも容易ではありません.このことは近隣分野と音声認識コミュニティを分断する障壁ともなっています. しかし音声認識を実現するアルゴリズム自体は,基的には実はそれほど難解なものではありません.ソフトウエアが複雑なのは,多分に計算量やメモリ量削減のための様々な工夫やCに代表される手続き型プログラミング言語の抽象化能力の限界に起因しています. 他方,ソフトウエア工学の分野では複雑な処理をコンパクトに記述可能な次世代プログラミングパラダイムとして,純粋関数型言語が研究されています.純粋関数型言語は長らく研究段階に留まっていましたが,近年はHaskellなど実用性の高

  • Inemuri nezumi diary(2011-04-15)

    _ Gloss 入門 Haskell の 2D グラフィックスライブラリ Gloss の入門記事です。 Haskell で 2D グラフィックスするのはどうすんの : Stack Overflowで紹介されていたので試してみました。あと、前回の関西Codersで、流体シミュレーションを Java で、というのを見せてもらったので、それを Haskell で書いたらどうなるのかなーという興味もありました。Gloss のサンプルのひとつ Styrene は粒子シミュレーションになっていて、これを見るかぎり粒子が多くなければスムーズに動きそうです。 インストールの方法や、ドキュメントは公式ページをみてください。 Gloss トップページ Gloss : HackageDB Glossは、OpenGL と GLUT をベースにした 2D グラフィックスライブラリです。 OpenGL や GLUT

  • 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 - あどけない話
  • 夜中からの Haskell 談義

    くいなちゃん @b2 C/C++ 並に高速な実行ファイルを吐き、C/C++ よりもコンパイルが速く、メモリ周りが安全で(バッファオーバーラン&メモリリークを防ぐ)、文法が美しいような実用的言語を設計中。 最終的には、ネイティブ実行ファイル生成可能なコンパイラまでを作るよ! 2011-04-11 03:31:08 Hideyuki Tanaka @tanakh 水をさすようですが、Haskellはこれらをすべて満たしていると思いますので、参考にされると良いかと RT @a_mute: C/C++ 並に高速な実行ファイルを吐き、C/C++ よりもコンパイルが速く、メモリ周りが安全で(バッファオーバーラン&メモリリークを防ぐ)、文法が美しい 2011-04-11 03:32:26 くいなちゃん @b2 Haskell は中身がどう動作しているのか解らないんですが、C/C++ 並に高速な実行ファイ

    夜中からの Haskell 談義
  • Parallel GHC プロジェクトの近況 - あどけない話

    ことの起こりは Haskell night 2009 だった。パネルの司会をしてくださった赤池さんから、「Simon Peyton Jones さんが2010年4月に日にやってくるので、日の人達と会いたいと言っている」と相談された。Simon さんとは「ビューティフルコード」の編集でメールをやり取りして、知り合いになったらしい。 この件は僕が引き取ることになり、紆余曲折の末、Haskellers Meeting 2010 Springを開催できることとなった。僕は「Haskell で Web サーバーを実装してみました」という発表をした。頑張って、資料も日版と英語版を用意したし、両方の言語で喋って説明したので、Simon さんも理解してくれたらしい。 結局、この発表で言いたかったのは、「Haskell の IO マネージャーは select システムコールを使っているので、同時に 1

    Parallel GHC プロジェクトの近況 - あどけない話
  • 型推論はどのようにして実装されているか - ラムダプラス+の紹介 -

    この記事は Haskell Advent Calendar jp 2010 のために書かれた物です。(20日目) 型推論は簡単 ML や Haskell のような言語の型推論は、型推論を知らないみなさんが考えているよりは遥かに簡単な物です。大雑把に言ってしまえば、構文木全体を探索して、同一である事が明らかな型同士の単一化をしていけば型推論できてしまうのです。 型推論の難しい所その1 - 多相型 しかし、型推論にも難しい事が無いわけではありません。まず最初の難関としては多相型が挙げられます。 ML や Haskell では let などの変数束縛に対して多相型が導入されています。式の中でこれらの変数が出現すると、その型の型変数(確定していない部分)を全て付け替える操作が発生します。 しかし、確定していない部分を付け替えるという事は、最終的に元の型が確定した後にその操作をしなければ、型を正しく

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

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

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • 経験15年のOCaml ユーザーが Haskell を仕事で半年使ってみた - camlspotter’s blog

    今の会社に移って半年経ちました。めでたく試用期間終了です。といっても別に試用期間中に密かに首を切られるような事をしたとか、逆に試用期間が終わったからと言ってこれで定年までのうのうと働ける、という訳ではありません。未来は全く判りません。まあとにかく、一つ区切りがやってきました。 金融を知らないQuantsの仕事 私の職業の肩書きには Quantitatitatitatitative という単語がくっついて超カッコよさそう。普通は Quant というと、金融工学や統計数理に詳しい夜もブイブイいわしている超イケメン20代を想像しますが、私は金融とか全然知らないアラフォーお父さんです。それでも Quant です。お願いですから、私に何を買ったらいいかとか、聞かないでください。金融商品とか買った事ないし。というか、逆に教えて欲しいです。 私のチームは、当の Quant さん達が開発した、金融派生商

    経験15年のOCaml ユーザーが Haskell を仕事で半年使ってみた - camlspotter’s blog
  • Inemuri nezumi diary(2010-12-08)

    _ Haskell のプロジェクトを締めくくるとき (このエントリはHaskell Advent Calendar jp 2010のために書かれました) プログラミング言語 Haskell を学習したあと、最初にしてみたいことはなんでしょうか。 それはおそらく、「学習したかった理由」そのものです。 アプリケーションやライブラリを作ってみよう、ということが次の目的だと思うので、紹介します、ハマるところ一カ所も説明。 まず最初に知るべきことは Cabal です。 The Haskell Cabal - Common Architecture for Building Applications and Libraries という仕組みがあります。 Cabal はひとことでいうと、ポテトチップスの袋の裏です。 ポテトチップスの袋の表には、魅力的な写真や「コレ ハ いめーじ デス」といった目を惹くデ

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

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

    最適化コンパイラ屋がHaskellの副作用について考えてみる - ブートストラッピングでコンパイラを作る日記
  • One-liner in Haskell - 純粋関数型雑記帳

    Haskellを現場言語にするために、こんなものを作ってみました。 hoe: Haskell One-liner Evaluator (名前には深い意味はありません。) Haskellでワンライナーをやろうという誰得なツールです。誰得ですが、ワンライナーでも、型があると便利なんではなかろうか、型を元にユーザの望みの動作が大体決定できるんではなかろうか、という発想を元に作られました。 Haskellのワンライナーは、ghc -e でも評価できますが、これは (Show a) => a か、 (Show a) => IO a な型しか評価できません。hoeでは、String -> String など、もっと色々な型を評価できます。そして、その型に応じていい感じの動作が自動的に選択されます。 例えば、idを入力すると、入力がそのまま出力されます。 $ cat tmp Hello, Haskell

    One-liner in Haskell - 純粋関数型雑記帳
  • Lazy I/O must go! - Iteratee: 列挙ベースのI/O - 純粋関数型雑記帳

    最近ちょっと気になるiterateeを勉強したので、日語の解説を書いてみます。と言いつつ、大部分が The Monad.Reader Issue 16 *1 からの引用です。 はじめに Iterateeと呼ばれる新たなI/Oの抽象化手法が、最近にわかに広まりつつあります。既存のI/Oが抱える問題を解決するべくOleg Kiselyovによって2008年頃に提唱されたiterateeは、新しい高性能webフレームワークsnap *2 や、hyena *3 で利用されています。また、HackagDB上にて、iterateeパッケージ*4、およびiterateeを利用できる様々なパッケージ *5 *6 *7 *8 が公開されています。 しかし、ドキュメントの少なさなどからiterateeがどういうものなのかよく分からないという人も多いようです。そういうわけなので、iterateeを易しく解説し

    Lazy I/O must go! - Iteratee: 列挙ベースのI/O - 純粋関数型雑記帳