タグ

ocamlとHaskellに関するclavierのブックマーク (6)

  • 第7章 型や型クラスを自分で作ろう 前編 - Rejasupoem

    すごいHaskell楽しく学ぼう輪読会とは 経緯 2012年にSICP読書会に参加していてとてもためになったという話をしたのがきっかけで、社内でコンピュータサイエンスの勉強会をやろうということになりました。 そこで、2013年夏に社内でどのを教科書にするかアンケートをおこないました。 教科書の候補に上がった 計算機プログラムの構造と解釈(SICP) 言語:Scheme Web上での問題の解答の多さ(すくなくとも日語での)は、他を圧倒してる。 関数プログラミング入門(IFPH) 言語:Haskell SICPよりちょっと難しい。一番最初にやるではない感じ(ってえらい人が言ってました)。 プログラミングの基礎 言語:Ocaml 著者による解答例あり。いまSICPを読むのは時間の無駄 – きしだのはてな プログラミング言語の基礎概念 言語:Ocaml 「プログラミング言語の基礎概念」とい

    第7章 型や型クラスを自分で作ろう 前編 - Rejasupoem
  • ClojureではじめるSTM入門

    4. STMとは Software Transactional Memory ソフトウェアトランザクショナルメモリは、データベーストラン ザクションに似た並行性制御機構であり、並列計算を行う際の 共有メモリへのアクセス法である。 この機構はロックベースの同期を用いた並行性制御の代替手段と して機能し、ノンブロッキングな方法で実装される物もある。 Wikipediaより 楽観的: 他のスレッドを気にせずとりあえず実行してみる 変なことになったらリトライする 最近盛んに研究されている(らしい) 5. ロックの利点と欠点 利点 いつロックを取得し、解除するかを陽に制御できる 開発者にとって馴染みがある方法 多くのプログラミング言語でサポートされている 欠点 ロックのとる順序によってデッドロックが起こる 優先度逆転が起こる composableでない

    ClojureではじめるSTM入門
  • Parsecのソースちら見(1)〜(3) - Pixel Pedals of Tomakomai

    Parsecのソース読んでQiitaにメモった。 Parsecのソースちら見 Parsecのソースちら見(2) Parsecのソースちら見(3) 最初に全体構造さえ掴めれば比較的読みやすい内容。 let ... in がhaskellにしては多いのかなと思ったのだけど*1、もしかすると作ってるのOCaml文化の人だったりするのかな。 *1:個人的には上から読めるのでlet ... inの方が好き

    Parsecのソースちら見(1)〜(3) - Pixel Pedals of Tomakomai
  • 等差数列 - タイトル

    目標 配列の隣接する2項にそれぞれ演算を施した配列を得たい。つまり、 f (+) [1,2,3,4,5] = [3,5,7,9] のような f が欲しい。 結果 OCaml はオワコンだった (こうすればうまく書けるよ、というのがあれば教えてください) 愚直(Haskell) f g [] = [] f g [_] = [] f g (x:y:zs) = g x y : f g (y:zs) Haskell f g x = zipWith g x (tail x) F# let uncurry g (a, b) = g a b let f g x = Seq.map (uncurry g) (Seq.pairwise x) Ruby keyesberry さんより def f(x) x.each_cons(2).map{|y,z| yield(y,z)} end Ruby(無理やり) de

    等差数列 - タイトル
  • OCamlでモナドっぽいものを作る | 黒曜の吹き溜まり

    ライブラリの拡充と関数型言語のお勉強を兼ねて、モナドっぽいものを実装して見ました。 単純にモナドをOCamlで使いたいだけならMonad拡張を入れる方が手っ取り早いですが、あまり外部ライブラリへの依存性を入れたくないのと、OCamlの記法の中だけでどこまで出来るか試してみたかったので。 ちなみに誤解を避けるため先に断っておきますが、自分はHaskellerではありません。 以下ではモナドに関してHaskellをかなり参考にしていますが、Haskellのモナドに対する勘違いなどが含まれている可能性があります。 ご了承下さい。 とりあえず、インターフェースとなるシグネチャから作っていきます。 (* 型付きモナドのシグネチャ *) module type TypedMonadType = sig type 'a t val empty : 'a t val singleton : 'a -> '

  • OCaml 標準ライブラリ探訪 #2 List に関するおわびとおことわり - camlspotter’s blog

    関連リンク: OCaml 標準ライブラリ探訪 第0回 その他の回は第0回のトラックバックよりご覧ください。 「さようなら」周り等で、ご批判を頂きました。ありがとうございます。元来の毒舌な者ですから、ご勘弁ください。教科書や論文を書いてるわけでも無し、このブログはお酒飲んで常に勢いで書いておりますから、深く推敲いたしません。こんなの出版しても売れないでしょ? 関数型言語では (ここで関数型言語と限定する必要は無いのかもしれませんが、他の言語のことは良く判りませんので語るべきでは無いでしょう)、 再帰ははっきり言って難しい概念で、これは逃げずに強調すべき点だと考えます。こんな感じに言い換えてみると私の強調度がわかるのでは無いでしょうか: Cでポインタ理解したくない?お互い不幸になるだけですから、ポインタの無い言語を使ってください。ごきげんよう。 私は自称「関数型言語できます」という方にはこの十

    OCaml 標準ライブラリ探訪 #2 List に関するおわびとおことわり - camlspotter’s blog
  • 1