タグ

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

  • 2017年に「すごいHaskellたのしく学ぼう」を読む - Qiita

    はじめに この記事は「Haskell (その4) Advent Calendar 2017」の13日目の記事になりました。 書籍「すごいHaskellたのしく学ぼう」は2012年に発売され、現在も販売されているHaskell入門にぴったりの良書です。しかし、内容が2012年当時のままで止まってしまっています。 そこでこの記事では(もう年末ですが)2017年現在「すごいHaskellたのしく学ぼう」を読むにあたって注意すべき点を章ごとにまとめて紹介します。 イントロダクション イントロダクションの「Haskellの世界に飛び込むのに必要なもの」ではHaskell Platformをインストールするように紹介されています。しかし、現在ではStackを利用するのが一般的です。 Linux系OSではリポジトリにある「stack」や「haskell-stack」などのパッケージを導入することで使える

    2017年に「すごいHaskellたのしく学ぼう」を読む - Qiita
    mooz
    mooz 2017/12/14
    cabal → stack
  • 7.3.Syntactic extensions

    mooz
    mooz 2012/11/02
    Generalised (SQL-Like) List Comprehensions. SQL の {group, order} by を Haskell のリスト内包に.
  • Mac/emacsでHaskell環境を作る - mizchi log

    最近会社でHaskell書くタスクがあがってきたので環境を作っていた。 最近sublimtext2ばかり使っていたのだが、haskellはかなり文法がかなり厳密な言語なのでflymake(シンタックスチェッカ)がないと辛い Haskellのインストール 最近のMac(Lion)は標準だとllvmでないgccは持ってないので以下のリンクからDLしてくる https://github.com/kennethreitz/osx-gcc-installer LLVMに対応していないので、Macデフォルトのgcc(llvm-gcc)は使えない Haskellのバイナリをもらってくる http://hackage.haskell.org/platform/ Homebrewにもあるが、自前のビルドはかなり時間がかかる Haskellのパッケージマネージャのcabalは /Developer/usr/b

    Mac/emacsでHaskell環境を作る - mizchi log
  • Haskell 用の emacs カスタマイズ例 - わからん

    Haskell Advent Calendar 2011 への参加記事です。ふだん emacs でコードを書いているプログラマが Haskell を使ってみようと思ったときに、10 分でそれなりの環境構築するための、便利な手順書となることを目指して書きました。~/.emacs や ~/.emacs.d/init.el などの設定ファイルは、dot.emacs と表記しています。 Haskell の環境構築 Haskell 自体の環境構築の説明はこの記事の範囲外ですが、前提ですので、信頼できそうな説明へのリンクを載せておきます。 トラビスさんの『Haskell Platform インストール Linux編』 shelarcy さんの『Haskell Platform インストール Mac編』 tanakh さんの『Haskell Platform インストール Windows編』 ただし、私

    Haskell 用の emacs カスタマイズ例 - わからん
  • 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

    mooz
    mooz 2011/11/28
  • www.kotha.net

    ai2011sim Amaryllis the insanity 2011というゲームのシミュレータ。 Haskellコードの高速化 Haskellで速いコードを書くためのヒント集。 雑多なもの ページを作るまでもないような雑多なものです。 m100sim ステッパーズ・ストップの非電子ゲームであるマーガレッド・ハンドレッドの戦闘処理をコンピュータ上で行うためのソフトウェアです。 Cプリプロセッサ上で動作するBrainfuckインタプリタ 「FF12の乱数について」 PS2用ゲームFinal Fantasy XIIの内部的な乱数の扱いについて。 cxxgrass ちょっと草植えときますね型言語Grassのコンパイラ。 tcgsim TCGというアナログゲームのwebシミュレータです。関数型言語を使ってキャラに行動指針を与えることができます。 栄光のグラスゴーHaskellコンパイルシステム

  • Haskellの講義に関するQ&A - あどけない話

    岡山大学で、関数プログラミングの講義を一コマ担当しました。資料は、函数プログラミングの集いで使った関数プログラミングの道しるべを流用しました。ちゃんと用意しなくて、講義を受けた学生には申し訳ないです。 講義内容に関して質問を頂きました。同じような疑問を持つ人も多いと思いますので、担当教官の許可を得てここに公開します。 永続データプログラミングの意義は分かったが,破壊しないと効率が悪いのではないですか.配列のような構造が世の中には多い気がします.メモリは足りなくなりませんか. 基的に永続と呼ばれているデータは、共有の効率が高く、しかも不要になった部分はすぐに GC に回収されます。また、GHC の GC はすごく優秀であることが知られています。 Haskell では、下位のレイヤーではデータを破壊できて、たとえば固定長のバッファーを使い回すといったことも可能です。ただ、それは普通のプログラ

    Haskellの講義に関するQ&A - あどけない話
    mooz
    mooz 2011/11/26
    型推論。命令型のそれは、省略された型を推論。関数型のそれは、与えられた型を元に、型検査までを含む大きな枠組みの中でさまざまな場所の型を推論。
  • モナドとモナド変換子のイメージを描いてみた - melpon日記 - HaskellもC++もまともに扱えないへたれのページ

    最初に言っておくと、モナドって何なの?っていう答えは一切ないです。 自分にとってモナドは「とりあえず型さえ合わせておけば何かいろいろしてくれる奴」程度としか認識できていないので、そんな説明できないです。 で、そんな自分が脳内でどういう風にイメージしてモナドやモナド変換子の混ざったコードを書いているかというのを図に表してみました。 ここら辺の話を図にした感じです。 モナドを触ってみた - melpon日記 - HaskellもC++もまともに扱えないへたれのページ モナド モナドには return 関数と >>= 関数があります。 こんなイメージです。下側の線が普通の関数型の世界、上側の線がモナドの世界です。 どちらもモナド側の出力しか無いので、どちらかの関数を使ったら、モナドから脱出することはできません。 ただ、>>= 関数の右側が点線の箱になっていることが分かるでしょうか。 ここには、太

    モナドとモナド変換子のイメージを描いてみた - melpon日記 - HaskellもC++もまともに扱えないへたれのページ
  • モナドを触ってみた - melpon日記 - HaskellもC++もまともに扱えないへたれのページ

    で、こんな風に考えることにしました。 モナドは箱 モナドは単に値をくるんでるだけであると。 a をモナド化すれば m a。 でもってこうするための関数が return。単に m を付けるだけ。 モナドから値を取り出す なぜか知らないのですが、m a -> a なる関数は存在してないようです。 謎です。 ただ、do 記法というのを使えば取り出せるようです。 main = let ma = return "hoge" in do a <- ma print a return "hoge" でモナド化された ma は、do 内のみにおいてだけ a <- ma とすることで不思議な力が働いて値が取り出せます。何でこんなややこしいことするのか分かりませんが、とにかくそういうことらしいです。 モナド悲しみの連鎖 m a -> a なる関数が無いということは、一度モナド化したら、それを戻すことはできない

    モナドを触ってみた - melpon日記 - HaskellもC++もまともに扱えないへたれのページ
  • モナド則三度 - あどけない話

    「モナド則再び」で書いた「モナド則1」は何の訳に立つのかという問題ですが、"Monads for functional programming" に答えが載っていました。 以下のような加算機を考えます。 data Term = Con Int | Add Term Term data M a = M a deriving Show instance Monad M where return x = M x M x >>= f = f x eval :: Term -> M Int eval (Con a) = return a eval (Add t u) = do a <- eval t b <- eval u return (a + b) 論文には、M の実装が載っていないので、適当に作りました。Maybe でもいいでしょう。 こういう風に動きます。 式1: eval (Add (Co

    モナド則三度 - あどけない話
  • 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 談義
    mooz
    mooz 2011/04/21
  • モナド: お前はもう知っている | Webシステム開発/教育ソリューションのタイムインターメディア

    はじめに 過去に私がHaskellを学び始めた時、 真っ先に疑問に思ったことはモナドの存在だった。 当時は全くと言っていいほど理解できなかったが、 最近Haskellを学び直して ようやく理解することができた(と思う)。 という訳で、現時点での私のモナドへの理解を示すためにこの記事を書く。 ここではモナドの質が何なのか概要を示す。 正確な説明は数多あるモナドについてのチュートリアルを参照されたい。 Hellow World問題: IO, Monad, fail 新しい言語を学ぶ時、まず間違いなくHello Worldを書くだろう。 HaskellでHello Worldを書くとこうなる: この1行だけを見ると普通の命令型言語と大して変わらないように思える。 ところでHaskellには強力な型推論がある。 そのため型宣言を省略しても処理系がよしなに解釈してくれる。 ただ普通はコードの意図す

    モナド: お前はもう知っている | Webシステム開発/教育ソリューションのタイムインターメディア
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

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

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • http://homepage1.nifty.com/herumi/diary/1101.html

    mooz
    mooz 2011/01/29
    "monadやarrowのために圏を勉強して「圏論がわからん」と言ってるのを見ると, 群の定義と初歩的な例や共変の例を見せて, 圏はそれらを抽象的に扱う枠組みだからに先に具体例を知った方がええんじゃないのと"
  • 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プログラミングの基礎。…パイプ感覚で順次/分岐/繰返し - よくわかりません
    mooz
    mooz 2011/01/10
    Arrow
  • 経験15年のOCaml ユーザーが Haskell を仕事で半年使ってみた - camlspotter’s blog

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

    経験15年のOCaml ユーザーが Haskell を仕事で半年使ってみた - camlspotter’s blog
    mooz
    mooz 2010/12/13
  • やさしい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のブログ
  • Scalaz Tutorial: Enumeration-Based I/O with Iteratees

    NOTE: This content is being moved to the target of this link. Please update your bookmarks. Scalaz 5.0 adds an implementation of a concept called Iteratee. This is a highly flexible programming technique for writing enumeration-based input processors that can be freely composed. A lot of people have asked me to write a tutorial on how this works, specifically on how it is implemented in Scalaz and

    Scalaz Tutorial: Enumeration-Based I/O with Iteratees
    mooz
    mooz 2010/10/18
    Scala で Iteratee
  • Glasgow Distributed Haskell

    Motivation The number of computers in our society is increasing exponentially, and wireless/wired network technologies are vastly increasing connectivity. Constructing distributed software for these systems has focussed research interest on distributed and mobile programming languages. Compared to conventional distributed languages, functional languages offer a more dynamic programming model: task

    mooz
    mooz 2010/09/16
    分散 Haskell. Glasgow Parallel Haskell.