haskellに関するpropellaのブックマーク (34)

  • やさしいFunctional reactive programming(Event編) - maoeのブログ

    前回はFRPのBehaviorとEventという重要な概念と、Haskellでの代表的なライブラリを簡単に紹介しました。今回は紹介したものの中からreactiveというライブラリを取り上げます。 なお、reactiveを理解するにあたってLess Sugar/More Meat » Blog Archive » Introducing Reactive: Eventsというチュートリアルがとても役に立ったことを書いておきます。この後出てくる解説も冒頭部分はこのチュートリアルからとってきています。それと、動作環境はLinux上のGHC 6.12.1でコンパイルしたreactive 0.11.4を使っています。 reactiveの特徴 reactiveはConal Elliottが作った最新のFRPライブラリで、ライブラリのユーザ側から見た大きな特徴は、Arrowを使わない古典的FRPをFun

    propella
    propella 2010/01/17
    これは良いチュートリアル
  • 誰得 - Yet Another Ranha

    ですが、発表に使った資料をあげておきます。 なぜなに依存型View more documents from ranha.

    誰得 - Yet Another Ranha
    propella
    propella 2009/12/26
    これはよい
  • Gauche:text.prettyprint

    propella
    propella 2009/10/22
    pretty print コンビネータの紹介
  • [Haskell-cafe] A systematic method for deriving a defintion of foldl using foldr?

    propella
    propella 2009/10/17
    foldr で foldl を定義する方法スレ
  • Introduction to Categorical Programming (Revised)

    The document contains chemical structures and mathematical equations. It discusses machine learning methods for predicting molecular properties from graph-based representations of molecules using node and edge descriptors without quantum chemistry calculations. Random forest, support vector machines, and other models are mentioned for making predictions from molecular graph encodings.

    Introduction to Categorical Programming (Revised)
    propella
    propella 2009/10/17
    圏論とfoldについて
  • 第34回 様々なデータ構造でfoldを使えるようにするFoldableクラス

    データ構造の中のすべての要素にアクセスする高階関数には,個々の要素ごとに関数を適用するmapと,すべての要素を使って計算を行うfoldの大きく二つがあります(参考リンク1,参考リンク2)。第3回で説明したように,mapは様々なデータ構造で利用できるようFunctorクラスを使って一般化されています。実は,foldも様々なデータ型に対して扱えるよう型クラスを使って一般化されています。 foldを一般化するFoldableクラスは,baseパッケージのData.Foldableモジュールで用意されています。今回はFoldableクラスについて説明します。 Foldableクラスで定義されているメソッド foldには,第7回で紹介したfoldrと第9回で説明したfoldlの二つがあります。Foldableクラスには,foldrメソッドとfoldlメソッドの両方が存在します。加えて,様々なfold

    第34回 様々なデータ構造でfoldを使えるようにするFoldableクラス
  • 再帰のパターン - maoeのブログ

    Fun of Programming (Cornerstones of Computing)の3章「Origami programming」の冒頭にはこんな事が書かれている。 One style of functional programming is based purely on recursive equations. Such equations are easy to explain, and adequate for any computational purpose, but hard tu use well as programs get bigger and more complicated. In a sense, recursive equations are the 'assembly language' of functional programming, and

    再帰のパターン - maoeのブログ
    propella
    propella 2009/08/27
    数学と haskell 両方で再帰パターンの解説する話。
  • 米田のレンマのイメージ図 - Pixel Pedals of Tomakomai

    米田のレンマ(層・圏・トポス―現代的集合像を求めてのP.71)がどうも不思議な定理に感じたので、イメージ図を書いてみました。 元の圏ではなく、Setsの圏内の図として書いてます。真ん中のC(を関手Fで移した集合)がhom関手をとる時に起点となる対象です。hom関手によって各対象は、射を束ねた集合に移ります。hom(C,A)等がそれです。 hom(C, -)とFの間の自然変換は、緑の矢印と青の矢印です。もちろん表記は省略してますが、二つだけじゃなくたくさんあります。 例えば、緑の自然変換の対象Aのコンポーネント(hom(C,A)からFAへの矢印)を考えると、これはC→Aなる射に対してFA上の値を与える関数となります。そのためには、射の出元であるFC*1の元を固定するとよさげです。図では緑のXとして書きました。この、緑のXと緑の矢印が対応すると言うのが、米田のレンマの主張となります。 レンマを

    米田のレンマのイメージ図 - Pixel Pedals of Tomakomai
  • Fun with Haskell view patterns

    Is there a copy’n’paste error in Prelude> dropPrefix “foolish” “football” (“lish”, “ball”) which should rather be Prelude> dropPrefix “foolish” “football” (“lish”, “tball”) ?

  • 思考実験: returnを関数と思ってみる話 - d.y.d.

    21:07 09/03/26 zipWithN twitterでいけがみさんが張ってらした論文が面白かったです。 map f [a1, a2, ..., an] ==> [f a1, ..., f an] zipWith f [a1, ..., an] [b1, ..., bn] ==> [f a1 b1, ..., f an bn] zipWith3 f [a1, ..., an] [b1, ..., bn] [c1, ..., cn] ==> [f a1 b1 c1, ..., f an bn cn] ... zipWith7 f [a1, ..., an] [b1, ..., bn] ... [g1, ..., gn] ==> [f a1 b1 … g1, ..., f an bn … gn] Haskell98 の標準ライブラリの関数ですけど、 1引数関数 f と1つのリスト as

  • Haskell programming tips- 他人のHaskell日記 - haskell

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

    Haskell programming tips- 他人のHaskell日記 - haskell
  • Real Word Haskell を訳すのだ - imHo

    Real World Haskellのライセンスはクリエイティブ・コモンズ。なので勉強がてらに日語に訳すという俺プロジェクト。 http://www.mokehehe.com/realworldhaskell/ できれば発売までに訳したかったけど、それは叶わぬ夢。 著者の方に連絡をしようと思ったんだけど連絡先がわからなかったので、強行採決!

    Real Word Haskell を訳すのだ - imHo
  • はてなブログ | 無料ブログを作成しよう

    ネイルで使う材料で、DIY時の木割れやネジ跡を派手にしたらかわいい OSB合板でちょっとしたボックスをつくりました。 ビス止め下手すぎて木を割ったり穴あけすぎたりした場所に、好きな派手色の樹脂を詰めてパテ代わりにしてみました。 ちょっと某HAYっぽみ出て可愛かったので、自分用にメモです。 手順 塗装 派手色グミジェルで失敗部分…

    はてなブログ | 無料ブログを作成しよう
    propella
    propella 2008/07/06
    これはよいまとめ
  • University of York

    User Web Areas This web server hosts our users' own web areas. These User Web Areas are provided by individuals or groups at our University in a personal capacity; if you are looking for the University's official web site please see The University of York instead. Creating your own user web area If you are a member of the university visit this page for instructions on creating a web area.

  • [ The Helium Homepage - Home]

    Introduction Helium is a functional programming language and a compiler designed especially for learning Haskell. It is being developed at the Software Technology group of the Institute of Information and Computing Sciences of Utrecht University in the Netherlands. Quality of the error messages has been the main concern both in the choice of the language features and in the implementatio

  • 自動微分モジュールで遊ぶ - 2007-12-03 - mad日記

    HackageDBでnumbersというパッケージを見つけました。この中にData.Number.Difという自動微分のモジュールが含まれていたのですが、これがなかなか面白いです。 サンプルコードを全然見かけないので、いろいろと書いてみます。 自動微分とは 自動微分というのは関数の導関数の値を自動的に求めるということですが、これには「数値的」にやる方法と「記号的」にやる方法があります。数値的にというのは という式のhに適当な微小量を与えて、近似的に導関数の値を求める方法を言います。 一方記号的にというのは の様に、微分公式を使用して具体的に関数を求める方法を言います。 Difモジュールが行うのは後者ですが、Haskellの遅延評価と多相型を生かして非常に使い勝手の良いものになっています。プリプロセッサを通すとかいった手間もありません。 自動微分のアルゴリズムについてはAutomatic d

    自動微分モジュールで遊ぶ - 2007-12-03 - mad日記
  • Haskell がアセンブリになるまで @なんとかセミナー - 兼雑記

    寝坊して14時出社で社内テックトークとか聞き逃しておきながら16時半に消えるとかどうなんかね…とか思いつつ、行かないとこうかなぁと思ったけどやっぱり行った。で面白かったです。話者の id:MaD さんありがとうございます。 GHC のコンパイラの作業の概略ということで、日語としてはたぶん割とレアな話題の資料なのでぜひぜひ公開を。 http://pira.jp/nandemo/wiki.cgi?page=62 詳しい内容は mame さんとかにおまかせで。 http://d.hatena.ne.jp/ku-ma-me/20071022/p1 色々謎とか。ぶっちゃけよくわかってない。 type check => desugar desugar が type check より先ってのは私もなんかわりとびっくりだったんだけど、でもまぁ GHC の言う desugar ってのはなんか他の言語ならあ

    Haskell がアセンブリになるまで @なんとかセミナー - 兼雑記
    propella
    propella 2007/10/25
    これは面白い
  • mad日記 - Arrowパズル解答 (とArrowLoop解説)

    まず最初にArrowLoopについて説明します。数学的な話は一切しません(できません)。 ArrowLoopの仕組み ArrowLoopというクラスにはloopという関数が一つだけ属しています。このloopはArrowから新しいArrowを作り出してくれる関数です。 まずloopに入れるArrowはこんな形をしています。 入力が2つあり、出力も2つあります。ただし、Arrowは入力と出力がどちらも1つずつでなければならないので実際はタプルとして入出力します。標準ライブラリで定義されているArrowLoopクラスのインスタンスには普通の関数と、モナドをArrow化したKleisliというArrowがあります。 ここでは例として次のArrowを考えます。 swap_mul = \(x, y) -> (2 * y, 3* x) 実行例 > swap_mul (3, 4) (8,9)簡単な関数です

    mad日記 - Arrowパズル解答 (とArrowLoop解説)
    propella
    propella 2007/08/19
    ArrowLoop 図入りの説明
  • Arrowの心 - 2007-08-16 - mad日記

    昨日の続きです。記法がよいとかMonadみたいに副作用が扱えるとか言ったメリットをはるかに越えたArrowの素晴らしさについて紹介します。 reverse.reverse == id か? 自分が最初にArrowってすごいと気づいた問題がこれです。大学で同級生と話している時に気づきました。大して役に立つ例では無いですが、Arrowの新しい側面が見えてくる例です。 標準入力に対してreverse,reverse,headを順に実行して結果を出力するコードは以下のようになります。後の比較の為に敢えてArrowで書いています。 import Control.Arrow main :: IO () main = getContents >>= print. (reverse >>> reverse >>> head) リストを2回ひっくり返したら元に戻るだけなので、そのheadをとるという計算は一

    Arrowの心 - 2007-08-16 - mad日記
    propella
    propella 2007/08/18
    すばらしい
  • Arrowでクイックソート - mad日記

    久しぶりに書きます。この1ヶ月半ほどは、大学の試験があったり、塾の夏期講習をやったり、CPU実験が始まった(勝手に始めた)りしたのでブログの事をすっかり忘れてました。 んで、現在Haskellでコンパイラを製作なんかをしています。その為にHaskellの勉強を始めたのですが、Arrowというモジュールに出会ってどっぷりはまってしまいました。 Arrowは書きやすいのか? Haskellと言えばやっぱりクイックソートだろうということでArrowで書いてみたんですが、こんな事になりました。あえて全部Arrowで書いているので複雑ですけれども。 qsort :: Ord a => [a] -> [a] qsort = (null >>> \x -> if x then Left else Right) &&& id >>> app >>> id ||| (head &&& ((head >>>

    Arrowでクイックソート - mad日記
    propella
    propella 2007/08/16
    ArrowLoop の貴重なサンプル