タグ

haskellとprogrammingに関するemonkakのブックマーク (25)

  • The Cubix Framework

    Building a Programming Tool? Build for 5 languages at once -- | Inserts "blocksCovered[n] = true" printouts for test-coverage -- at every basic block -- -- Runs on C, Java, JavaScript, Lua, and Python instrumentTestCoverage :: forall fs l. (CanInstrument fs) => ProgInfo fs -> TermLab fs l -> Annotater (TermLab fs l) instrumentTestCoverage progInfo t = performCfgInsertions @(StatSort fs) progInfo $

  • Eta Programming Language - Haskell on the JVM

    What is Eta? Eta is a pure, lazy, strongly typed functional programming language on the JVM. It brings two big ecosystems, the JVM and Haskell, together. This allows you to harness the best of both ecosystems to build your applications quickly and effectively. Eta's concurrency support helps you to build highly scalable systems.

  • Hakaru

    Hakaru Hakaru is a simply-typed probabilistic programming language, designed for easy specification of probabilistic models and inference algorithms. This type of language is useful for the development of machine learning algorithms and stochastic modeling. Hakaru enables the design of modular probabilistic inference programs by providing: A language for representing probabilistic distributions, q

  • Frege: JVMのためのHaskellのような言語

    ドイツ数学者、Gottlob Frege氏から名付けられたFregeは、JVMのための純粋関数型の強力な型付き言語だ。FregeはHaskellと似ていて、「もっともHaskellらしいコードを修正せずに、または、見て分かる最小限の調整だけで動かせる。」 Fregeの開発者たちによると、Fregeは「パワー、単純さ、表現力の豊かさの組み合わせにおいて、類を見ないもの」である型システムをJVMに持ち込んだ。これにより、非正格 評価と型推論をサポートし、純粋性とデフォルトの不変性を可能にする。そのため、副作用は宣言された時のみ使うことができる。Fregeは、以下のようなHaskellの機能をほぼサポートしている。 ADTとパラメトリックポリモフィズムを用いた型クラス より高いランクの型 パターンマッチング リストの包含 do表記 ポイントフリースタイル モジュール functor、monoi

    Frege: JVMのためのHaskellのような言語
  • Idris: A Language for Type-Driven Development

    Idris: A Language for Type-Driven Development Idris is a programming language designed to encourage Type-Driven Development. In type-driven development, types are tools for constructing programs. We treat the type as the plan for a program, and use the compiler and type checker as our assistant, guiding us to a complete program that satisfies the type. The more expressive the type is that we give

  • プログラミング言語Frege(フレーゲ)を紹介します - uehaj's blog

    これはマイナー言語 Advent Calendar 2013の21日目の記事です。 Frege(フレーゲ*1 )を紹介します。 Fregeは、Java VM上で動作するHaskell風の言語です。以下のような特徴を持っています。 純関数型言語 非正格評価(いわゆる遅延評価) Hindley-Milner型推論に基づく静的型言語 これらの特徴は、Haskellと共通するものであり、構文も基的なところについてはHaskellとだいたい同じか似ているかもしくはサブセットです。標準関数やデータ型やモジュールについても、Haskell 2010からたくさん引っぱってきているそうです。 しかしながら、Fregeはその目標において、Haskellとの完全な互換性を達成しようとはしていません。実際かなり違っています。特にJava VM上で有用であることに重点が置かれており、プリミティブ型はJavaのもの

  • Haskellの楽しみ:<br>手続き操作型というパラダイム

    Haskellの楽しみ: 手続き操作型というパラダイム田中英行 tanakh@preferred.jp 2011/11/09 技術交流会 @日ユニシス 自己紹介 田中英行 (@tanakh)(株)Preferred Infrastracture 研究開発部門社内ライブラリ pficommon https://github.com/pfi/pficommon分散機械学習フレームワーク jubatus http://jubat.us/Haskell愛好家2003~Learn You a Haskell for Great Good!訳してます日の概要 ・ Haskellは 簡単 ・ Haskellは すごい ・ Haskellは 面白い ・ Haskell は簡単ですごく面白い ・ Haskell は面白くてすごいものが簡単に作れる (あとモナドの話少し) 最近のHaskellの話題Yes

  • モナドのすべて Haskell におけるモナドプログラミングの理論と実践に関する包括的ガイド

    モナドのすべて Haskell におけるモナドプログラミングの理論と実践に関する包括的ガイド Version 1.1.0 このチュートリアルは、モナドの概念とその関数プログラミングにおける応用に ついて、初中級の Haskell プログラマにわかりやすく、利用価値があるような 解説をすることを旨としています。読者は Haskell になれていることを前提と しますが、モナドに関する経験は要求していません。このチュートリアルは、多 くの題材をカバーしています。後半のセクションでは、前半の題材をよく理解し ていることを前提とします。順をおって、モナドプログラミングを例示するため のサンプルコードがたくさん用意されています。一読で、すべての題材を吸収し ようというのはお勧めできません。 このチュートリアルは 3 つの部分で構成されています。最初の部分は、 関数プログラミングにおけるモナドの基

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

    あと、やはりネットワーク周りなどI/Oの多いプログラムの書きにくさが課題になっている印象。関数的なI/OはFRPで解決できそうな気がするんだけど調べてない。そろそろFRPをちゃんと理解したいなー。 Parsec 3活用事例: Keepalived構文チェッカ - maoeのブログ なんて書いてから早1ヶ月半、ようやくFRPが掴めてきたのでわかったことをまとめてみます。 Reactive programmingって何? FRPの前に、一般的にwikipedia:en:Reactive programmingと呼ばれるパラダイムについて触れておきます。reactive programmingとは疑似言語を使ってかなーり大雑把に説明すると、 var a = 1 var b = a + 1 a = 10 // aを書き換える print b // => 11print bの出力は2ではなく11です

    やさしいFunctional reactive programming(概要編) - maoeのブログ
  • フィボナッチ数列のまとめ - あどけない話

    フィボナッチ数列は、自然界に現れる単純にして基的な数列である。たとえば、ヒマワリの種の並びやミツバチの家系図はフィボナッチ数列を成す。 再帰 フィボナッチ数列の漸化式をそのまま Haskell で実装すると以下のようになる。 fib :: Int -> Integer fib 0 = 0 fib 1 = 1 fib n = fib (n - 1) + fib (n - 2) fib 0 = 0 の代わりに fib 2 = 1 とする流儀もある。フィボナッチ数列は、もともとウサギのつがいの話だから後者の方が正統だが、前者の方が数学的には美しい。 漸化式は、すなわちトップダウン的な表現であり、理解しやすい。しかし、この実装は同じ値を何度も計算するので、とても遅い。 反復 単純な再帰を反復(ループ)に変形してみよう。それには、関数が末尾再帰の形になればよい。末尾再帰へ変換する定石は、引数に蓄積

    フィボナッチ数列のまとめ - あどけない話
  • プログラミング/Haskell - Flightless wing

  • The Expression Problem - maoeのブログ

    この記事はHaskell Advent Calendar jp 2010 : ATND向けに書いたものです。 最近、ふらふらとネットの波をさまよっていたら、Channel 9でRalf LaemmelさんがHaskellの型クラスを解説する動画を見つけました。これです。 C9 Lectures: Dr. Ralf Lämmel - Advanced Functional Programming - The Expression Problem | Going Deep | Channel 9 C9 Lectures: Dr. Ralf Lämmel - Advanced Functional Programming - Type Classes | Going Deep | Channel 9 The Expression Problemと呼ばれるプログラミングにおける古典的な問題をネタに

    The Expression Problem - maoeのブログ
    emonkak
    emonkak 2010/12/15
    The Expression ProblemをHaskellの型クラスで。
  • 経験15年のOCaml ユーザーが Haskell を仕事で半年使ってみた - camlspotter’s blog

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

    経験15年のOCaml ユーザーが Haskell を仕事で半年使ってみた - camlspotter’s blog
  • ArrowによるHaskellプログラミングの基礎。…パイプ感覚で順次/分岐/繰返し - よくわかりません

    Programming with Arrowsを読んで理解したつもりのメモ。誤りなど乞うご指摘。 (復習)Arrowってなに? と思って以前調べたメモが"3分で解るHaskellのArrowの基メモ - よくわかりません"。それにちょっと補足というか観点を変えてまず感覚の整理。 Monadに色んな種類があるように、Arrowも色んな種類がある。 Monad: IO、Maybe、… Arrow: 関数そのまんま(->)、Kleisli m、… ある種類のMonadに色んな型の色んな値を入れられるように、ある種類のArrowに色んな型の色んな関数を入れられる。 Monad: Maybeの例→ 「Maybe Int」 にreturn 0もreturn 777もOK。「Maybe Char」 にreturn 'a'もreturn ' 'もOK。 Arrow: (->)の例→ 「Int -> In

    ArrowによるHaskellプログラミングの基礎。…パイプ感覚で順次/分岐/繰返し - よくわかりません
  • やさしい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

  • Haskellの神話 - あどけない話

    Haskell の優雅さを示すためによく使われるコードは、優雅さと分かりやすさだけに特化しており、現実的には遅いことが多い。書き手は他に効率のよい実装があることを知っているのだけれど、読み手はそうではないから、後で効率が悪いと気づいて愕然とするみたいだ。 この記事では、神話になっている例を3つ取り上げ、効率のよい実装と合わせて紹介する。その 3 つの例とは、以下の通り。 フィボナッチ数 素数生成 ソート フィボナッチ数 遅延評価を活かした優雅なフィボナッチ数の実装は、以下の通り。 fib n = fibs !! n fibs = 0 : 1 : zipWith (+) fibs (tail fibs) Haskellの「fib = 1:1:zipWith (+) fib (tail fib)」はとても遅いにも書かれているように、この実装は遅い。 その理由は、(+) の計算が遅延し、その待機

    Haskellの神話 - あどけない話
    emonkak
    emonkak 2010/11/07
    フィボナッチ数、素数生成、quicksortの効率のいい実装。
  • 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 - 純粋関数型雑記帳
  • jQueryはモナドだ - id:anatooのブログ

    この記事はjQuery is a Monad | Important Shockという記事の勝手訳です。 追記1: bonotakeさんが補足記事を書いてくれています → JQueryがモナドかどうかとか - たけをの日記@天竺から帰ってきたよ 追記2: hirataraさんが補足記事を書いてくれています → jQueryは当にモナドだった - 北海道苫小牧市出身のPGが書くブログ Haskellプログラマーは誰しもがモナドに関する各々のチュートリアルを書くと言われる。というのも、一度モナドの定義とその可能性を理解すれば、モナド全体を囲む神秘性に挑戦して打ち破るのが容易になるからだ。門外漢からすれば、モナドはHaskellを真に理解することを妨げる不可解な障壁だ。モナドはとても不適当な名前で呪われていて、一風変わった文法を持ち、一度に何もかもやってしまう様に見える。しかしながら、その動き

    jQueryはモナドだ - id:anatooのブログ
  • foldr と foldl の違い - 言語ゲーム

    こないだの属性文法の記事では沢山 foldr が出てきます。foldr や foldl は関数型言語におけるループ構文です。私のようなにわか関数信者は嬉しがってつい再帰を使ってしまいますが、再帰のようなパターンを良しとしない物の Haskell プログラマは fold を使います(多分)。ただ、foldr や foldl というネーミングは、文章が左から右へ流れると信じて疑わない欧米帝国主義の醜悪な悪習と言わないまでも、再帰についての重要な違いを軽視しているような印象を受けます。これらの関数は、当は全然対称じゃないのです。というわけで調べてみます。 さて、足し算はどっちに結合しても良いので、1 + 2 + 3 + 4は次のように書けます。 foldr (+) 4 [1, 2, 3] -- 1 + (2 + (3 + 4)) == 10 foldl (+) 1 [2, 3, 4] --

    foldr と foldl の違い - 言語ゲーム
  • perl & javascript - で単なる自己関手の圏におけるモノイド対象(笑) : 404 Blog Not Found

    2010年05月19日20:00 カテゴリLightweight Languages perl & javascript - で単なる自己関手の圏におけるモノイド対象(笑) 参照透過性ふいたwww 不完全にしておよそ正しくないプログラミング言語小史 1990 ? サイモン・ペイトン・ジョーンズ、ポール・フダック、フィリップ・ワドラー、デミ・ムーアの夫、ならびに動物の倫理的扱いを求める人々によって構成される委員会により、遅延評価を行う純粋な関数型言語Haskellが作られる。副作用の制御に使われるモナドの複雑さのため、Haskellには抵抗を持つ人々がいる。ワドラーは批判を和らげるために、こう語っている。「モナドは単なる自己関手の圏におけるモノイド対象だよ。何か問題でも?」 「何か問題でも」と言われた場合は、自分の問題にして解いてみることにしている。 というわけでIOモナドをJSとPerl

    perl & javascript - で単なる自己関手の圏におけるモノイド対象(笑) : 404 Blog Not Found