タグ

Haskellに関するn314のブックマーク (62)

  • Real World Haskell の古いところ - あどけない話

    Real World Haskell の内容が古くなってきたので、どこが古いかとか、それに変わる新しいものは何とか、まとめたいと思う。 Real World Haskell―実戦で学ぶ関数型言語プログラミング 作者: Bryan O'Sullivan,John Goerzen,Don Stewart,山下伸夫,伊東勝利,株式会社タイムインターメディア出版社/メーカー: オライリージャパン発売日: 2009/10/26メディア: 大型購入: 8人 クリック: 245回この商品を含むブログ (76件) を見る 1章 始めましょう 今でも通用する。 2章 型と関数 今でも通用する。 3章 型を定義し、関数を単純化する 今でも通用する。 4章 関数プログラミング ghc に --make オプションはもう不要。 5章 ライブラリを書く 5.14節では、"runghc Setup build" の

    Real World Haskell の古いところ - あどけない話
    n314
    n314 2014/02/06
  • Haskell使いの高頻度取引の会社にお邪魔した

    先日、日経コンピュータ特集記事の取材で東京都内の某所にある「Tsuru Capital」という、高頻度取引(HFT、High-Frequency Trading)を手掛ける企業のオフィスにお邪魔した。 HFTというのは、プログラムによって株式などの金融商品を数ms(ミリ秒)から数μs(マイクロ秒)で高速に自動取引すること。自己資金で取引する「プロップファーム(proprietary trading firm)」と呼ばれる企業が中心で、米GETCO(2013年7月に米Knight Capitalと合併)などが有名だ。 HFTを行うプロップファームの多くは、米国など海外に拠点を置いており、Tsuru Capitalのように日国内に拠点を置く企業は珍しい。株式売買では、海外企業であっても国内の証券会社と契約し、自社の取引プログラムをその証券会社のサーバーに配置すれば日市場でのHFTは行える。

    Haskell使いの高頻度取引の会社にお邪魔した
  • コンパイル時にファイルからテキストを読み込む - melpon日記 - HaskellもC++もまともに扱えないへたれのページ

    例えばテキストを埋め込むだけなら、 main = putStrLn $(LitE . StringL <$> runIO (readFile "hoge.txt")) -- hoge.txt の中身は hogefuga と書かれているとする。 とするだけで、 main = putStrLn "hogefuga" と同じ意味になってくれます。 ファイルが無かったり何らかのエラーが発生したらコンパイルエラーになるだけなので安心です。 型を分解していくとこんな感じ。 readFile "hoge.txt" :: IO String runIO :: IO a -> Q a StringL :: String -> Lit LitE :: Lit -> Exp runIO で IO モナドから Q モナドに変換してくれるので、あとは Q String から文字列リテラルの Q Exp に変換してる

    コンパイル時にファイルからテキストを読み込む - melpon日記 - HaskellもC++もまともに扱えないへたれのページ
    n314
    n314 2012/03/27
  • Type Families , Type Families (2) - #3(2009-09-07)

    ■ [Haskell] Type Families Data Familiesは、型パラメータに依って実装を変えたいときに使えます。C++のテンプレートでの特殊化みたいなものでしょうか*1。 {-# LANGUAGE TypeFamilies #-} import qualified Data.Sequence as Seq data family Vector a -- BoolのVectorはリストで表現 data instance Vector Bool = BoolVector [Bool] -- IntのVectorはSeqで表現 data instance Vector Int = IntVector (Seq.Seq Int) -- 関数はクラスにする必要があります class VectorElem a where add :: a -> Vector a -> Vector

    n314
    n314 2012/03/20
  • GADTs使ってみた - Faith and Brave - C++で遊ぼう

    このエントリは、Haskell Advent Calendar 2011の参加記事です。 今回は、HaskellのGHC拡張であるGADTs(Generalized Algebraic Data Types : 一般化代数データ型)を調べて使ってみたという内容を書いてみました。 最初に、GADTsはGHC拡張なので、使用するには以下のようにして拡張を有効にする必要があります: {-#LANGUAGE GADTs #-} まずは構文的な違いを、Maybeを例にして見てみましょう。 通常の代数データ型では、Maybeは以下のように書きます: data Maybe a = Nothing | Just a GADTsでは以下のように書きます: data Maybe a where Nothing :: Maybe a Just :: a -> Maybe a 通常の代数データ型では、データコンス

    GADTs使ってみた - Faith and Brave - C++で遊ぼう
  • The Resource monad transformer

    Yesod is a Haskell web framework for productive development of type-safe, RESTful, high performance web applications. The Resource transformer (ResourceT) plays a vital role in proper resource management in the conduit project. It is included within the conduit package itself. We'll explaining ResourceT as its own entity. While some of the design decisions clearly are biased towards conduits, Reso

    n314
    n314 2012/03/15
  • できる!Template Haskell (完) - はてな使ったら負けだと思っている deriving Haskell - haskell

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

    できる!Template Haskell (完) - はてな使ったら負けだと思っている deriving Haskell - haskell
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

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

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

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

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
    n314
    n314 2012/03/14
  • Yesod勉強会

    Yesod勉強会 http://partake.in/events/5f27d86f-0211-4af4-9a9e-5f123056e44e での発表資料です。Read less

    Yesod勉強会
  • 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 - あどけない話
  • 第14回 関数脳のつくり方 Second Season ~モナドで悟りをひらく~

    大手SIベンダにてSEやPMやアーキテクトとして勤務したのち,株式会社豆蔵を経て,現在は合同会社シンプルアーキテクト代表社員であり,株式会社匠Business Placeのチーフコンサルタント。主に超上流のプロセスである要求開発やオブジェクト指向,アジャイル開発のコンサルタントとして活躍中。開発の現場にこだわり,開発の現場を少しでもよくしたいと日夜奮闘している。要求開発アライアンス執行委員。著書に『オブジェクト脳のつくり方』や『eXtreme Programming実践レポート』(ともに翔泳社発行。後者は共著)などがある。 Javaなど,オブジェクト指向や手続き型のプログラミングの経験はあるけれど,関数型のプログラミングは初めてという皆様のための,そして筆者自身のための「関数脳のつくり方」シリーズのSecond Season(First Seasonはこちら)。今回は「モナド」を取り上げま

    第14回 関数脳のつくり方 Second Season ~モナドで悟りをひらく~
  • JParsecで遊んでみる。 - 設計と実装の狭間で。

    まぁ、何と言うか、コンパイラ的なアレに興味があったりなかったりするので、 思いつきでコンパイラ作れそうな何かで遊んでみたくなってみたり。 JavaCCとかANTLRとか、SableCCとか、色々あるけど、 一際マニアックなのいってみようかって気分で、JParsecで遊んでみる事にする。 後さ、構文ファイルの記法覚えるのがタルいんだよねぇ…正直。 デバッガビリティが低すぎてさ…。 あんのかなぁ…ANTLRの構文ファイルをステップ実行できるツールとか。 家はHaskelで.NET版やRuby版の実装もあるので、知る人ぞ知るって感じなんだろうけども。 ちなみに、予防線を張っておくと、コンパイラに関しては、ワタクシほぼド素人デス。 書籍を斜め読みしたり、JavaCCのコード読んだり位はしてるけども、 何か数学的な話に対する理解はほぼ無いですなぁ。 っつうか、数学って高校二年の時以来それらしい事は

    JParsecで遊んでみる。 - 設計と実装の狭間で。
  • 手続き型に改宗しました - 純粋関数型雑記帳

    つい先日にあのような資料をアップロードして心苦しいのですが、手続き型に改宗することにしました。誰よりも関数型言語を愛し、常日頃よりどうして関数型が流行らないのかを考え続けていた私ですが、10年余りを経てようやく気付きました。関数型がイケてないから流行らないのだと。 関数型の人たちは言います。immutableこそ正義であると。でもそうなんでしょうか?変数に代入できる方が書きやすいに決まっています。書きにくいと思いつつも、Haskellというのは曰く、素晴らしい言語なのだから、そんなことはないはずだと自分をごまかしごまかしこれまで生きてきましたが、そうじゃないんです。ようやく目が覚めました。変数に代入できる方が書きやすいのは当たり前なんです。 モナドなんてへんてこなものを当たり前のように持ち出さなければならない時点でおかしいことに気付くべきでした。なぜ私はコンソールから文字を入力したいだけな

    手続き型に改宗しました - 純粋関数型雑記帳
  • Inemuri nezumi diary(2008-05-07)

    _ Haskell (GHC 6.8) における拡張可能なレコードを実現する手法 Simple Extensible Records -- Quick Generic Tricks, Pt.1 という手法が開発されたというニュースを目にしました(from programming.reddit.com)。 GHC 6.8.2のData.Genericsと"Scrap your boilerplate" -- Generic programming in Haskellを理解されている方にはこれ以上の解説は不要だと思います。Simple Extensible Recordsは便利な手法なので、使いどころがあれば適用してはいかがでしょうか。 ここに私なりに理解したことをメモしておきます。間違いなどがあったらご指摘ください。 Haskell の基と、その問題 Haskell が持っている強力な機

    n314
    n314 2010/07/15
  • スクラップ・ユア・ボイラープレート - 取り急ぎブログです

    Scrap Your Boilerplate:A Practical Design Pattern for Generic Programmingという論文を勉強中です。 以前リストの自由度で話した内容と関連しているのですが、 Haskellのリストは長さは可変な代わりに要素の型が全て同一でなくてはいけなくて、タプルは要素型が同一でなくてはよいけれども長さは固定、つまり リストでは [1, 2] :: [Integer] [1, 2, 3, 4] :: [Integer] のように長さの違うリストでも同じ型で表現できるけど、 [1, 'a'] のようなことは許されない。 タプルでは (1, 'a') :: (Integer, Char) は許されても (1, 2) :: (Integer, Integer) (1, 2, 'a') :: (Integer, Integer, Char) と

    スクラップ・ユア・ボイラープレート - 取り急ぎブログです
    n314
    n314 2010/07/15
  • 汝の隣人のブログを愛せよ | LOVELOG

    au one netのブログサービス 『LOVELOG』は2014年6月30日をもちまして提供を終了致しました。 永らくのご利用、誠にありがとうございました。 引き続きau one netをご愛顧いただきますよう、よろしくお願い申し上げます。 ※お手数ではございますが、新ブログにて閲覧の皆さま向けにブログURL変更等をご周知いただけますよう、お願い申し上げます。

    n314
    n314 2010/06/15
  • Inemuri nezumi diary(2009-01-08) - _ unsafePerformIO の使用は限定されています。ご利用は計画的に。

    _ unsafePerformIO の使用は限定されています。ご利用は計画的に。 いたるところで、 unsafePerformIO を見かけるようになったのでひとこと言うといたるわ。「Unsafe やって書いてある」やろ。おっと、地が出てしもた。 unsafePeformIO はもともと Haskell の規格 Haskell98 にはありません。初めて現れたのは、 "The Haskell 98 Foreign Function Interface 1.0 An Addendum to the Haskell 98 Report" の 5節 Marshalling についての、5.1 節 Foreign モジュールが提供するインターフェースについてです。 unsafePerformIO :: IO a -> a Return the value resulting from execut

    n314
    n314 2010/06/10
  • グローバル変数が欲しい理由?

    グローバル変数が欲しい理由? グローバル変数が欲しい理由っていうエントリを見まして,忙しかったのでズイブン遅くなっちゃったけど,ちょっと考えてみます. 実はコメントしているnobsunが話をした同僚ってのは私です. で,nobsunは完成したプログラムを公開してこうすればいいんじゃない的なブログを書いてますけど, これでは多分相手はナットクしないんじゃねーかなーと思うわけ. だってグローバル変数を避けて実装すりゃ,そらそうでしょうよって思うだけだもの. そうじゃなくてnobsunをはじめとしてHaskellerがグローバル変数を欲しくならないのか, それとも禁欲的に自分に制約をかけてるだけなのかを示さなきゃならんと思うわけですよ. 確かにグローバル変数が欲しいとか引数に持ち回らなきゃいけないのってイマイチとか, どっかで聞いたようなセリフだよなぁ.(^^;) いや,言いましたよワタシも.

  • エンバグ効率 - 純粋関数型雑記帳

    昨日の続き M氏がエンバグ効率なる言葉を作ってしまったので、 ちょっとそれについてお話しましょう。 エンバグ効率というのはちょっと不自然な感じのする言葉ですが、 意味はそのまま、バグを仕込む効率のことです。 もちろん、エンバグ効率は低い方が良いのです。 - ICFPの結果が発表された。 今年もHaskellは一位。 これは取りも直さずHaskellが優秀な言語であることを示しているのだが (Haskellがすごいのか、Haskellを使うような人がすごいのか? 無論前者である。だってそうじゃないと他言語ユーザがアレということになってしまう)、 ではなぜHaskellは優秀であるのか。 遅延評価、型推論、パターンマッチ、モナドなど、 Haskellを特徴付けるキーワードはいくつかあるが、 今回はそういうわかりやすい部分以外での優位性が 浮き彫りとなる結果になったような気がする。 というのも、

    エンバグ効率 - 純粋関数型雑記帳