タグ

Haskellに関するsiroccoのブックマーク (535)

  • http://www.haskell.org/ghc/docs/latest/html/libraries/base-4.6.0.1/System-Mem.html

    sirocco
    sirocco 2013/04/02
    performGC 強制的にGCを実行させる関数。
  • 第43回 criterionでプログラムの性能を測定する

    プログラムの性能を測定するにはどうすればよいでしょうか? すぐに思いつくのは,プログラムの実行時間を測定することです。しかし,現在のコンピュータの環境では,プログラムの実行が常に一定の速度で行われる保証はありません。また,Haskellではすべての値が遅延評価されるという事情もあります。 そこで,今回はHaskellプログラムの性能を測定するために用意されているベンチマーク・フレームワークである「criterionパッケージ」について説明します。 ベンチマーク・フレームワークを使うべき理由 プログラムの性能を測定する手軽な方法は,timeやtimeit.exeを使ってプログラムの実行時間を計ることです。しかし,OSの上では様々なプロセスが動作しており,それによってプログラムの実行時間にばらつきが生じます。ほかにも,実行時間にばらつきを生じさせる要因は数多く存在します。ばらつきを生じさせるす

    第43回 criterionでプログラムの性能を測定する
    sirocco
    sirocco 2013/04/01
    今度は time.exeでなく、これで測定してみよう。
  • Haskell の machines に入門してみた,というお話 - KrdLab's blog

    はじめに io-streams パッケージがリリースされた折にふと「conduit,pipes,io-streams 以外の streaming data を扱うライブラリには何があるんだろうか?」と疑問に思いつぶやいてみたところ, machines がある ということを教えていただきました. 気になったので調べてみた,というのが今回の内容です. 基的な使い方に始まり,何とか attoparsec を組み込むあたりまでは辿り着きました.なお,GHC 7.4.1 を使用しています. 見出し これは何? 雰囲気 どう使うの? 基形 Source の作成 Process の作成 Transducer を組み込む 複数入力の取り扱い Parser を組み込む おわりに これは何? 今回の対象は↓これ. machines-0.2.3.1 http://hackage.haskell.org/pa

    Haskell の machines に入門してみた,というお話 - KrdLab's blog
    sirocco
    sirocco 2013/03/31
    わからん・・・Orz
  • wxHaskell News

    sirocco
    sirocco 2013/03/29
    Haskell Platform 2012.4.0.0 で wxHaskellを使うにはwxWidgets 2.9でなければならないと言われインストール苦戦中。 wxPackは安定バージョンしかサポートしないそうだ。caba install でエラー。wx-config-win の問題かも。
  • 第25回 Haskell流の例外処理を学ぶ

    Haskellの静的な型検査は強力ですが,プログラムの実行時に起こり得るすべての問題を解決できるわけではありません。例えば第5回で指摘したように,依存型を持たない現在の標準Haskellでは,検証できる問題の範囲に限界があります。また,FFIを使って呼び出す外部関数には,Haskellの型検査は行き届きません。実行前に静的に解決できない問題は,実行時に動的に解決する必要があります。このための手段を提供するのが例外処理です。 例外処理については,これまで何度か断片的に説明しましたが,全体像をまとめて解説したことはありませんでした。次回以降にFFIと例外処理との関係について説明する前に,今回はHaskellの例外処理についてきちんと説明しておきましょう。 例外処理の仕組みは,GHC 6.10に収録されるbase 4.0パッケージ以降で大きく変更されます。baseパッケージはデファクト・スタンダ

    第25回 Haskell流の例外処理を学ぶ
  • Lensことはじめ - あどけない話

    見ろ! Haskell が OOPL のようだ! さてさて、ようやく重い腰を上げて、Lens を勉強し始めましたよ。Haksell for allを見て勉強すればいいのかなと思ったんですが、解説しているパッケージが data-lens なので古いですね。 今、使うべきなのは、lens というパッケージらしいです。解説は、この README を読むのが一番だそうです。この README と Haskell for all をにらめっこしながら、Lens の getter と setter の機能を使ってみます。 背景 Haskell の代数データ型にはフィールドラベルが定義できて、これがいわゆる getter と setter の役割を果たします。Haskell for all から例を引用してみましょう。 data Point = Point { x :: Double , y :: Do

    Lensことはじめ - あどけない話
    sirocco
    sirocco 2013/03/21
    Lensの紹介ありがとうございます。代数データ型にフィールドラベルを定義して getter 、 setterを作らせる方法は可読性が低くてパターンマッチを使っていました。
  • shelarcy(しぇらーしぃ) on Twitter: "無引数の型クラスの利用場面としては、今のところ、型クラスのインスタンスを通じてプログラムのグローバルな設定を行うことや、インスタンスを定義しないクラスを -fdefer-type-errors と併用することでコード上の問題を実行時エラーとして伝えることなどが提案されています。"

    sirocco
    sirocco 2013/03/15
    GHCへ型エラーを無視してコンパイル出来る機能とか、無引数の型クラスとか、動的型の長所を取り入れようとしている。Haskell にたどり着いて、今のところ他の言語を学ぶつもりはない。
  • The Glorious Glasgow Haskell Compilation System User's Guide, (Latest)

    Welcome to the GHC User’s Guide View page source Welcome to the GHC User’s Guide¶ Contents: 1. Introduction 1.1. Obtaining GHC 1.2. Meta-information: Web sites, mailing lists, etc. 1.3. Reporting bugs in GHC 1.4. GHC version numbering policy 1.5. The Glasgow Haskell Compiler License 2. Release notes 2.1. Version 9.10.1 2.1.1. Language 2.1.2. Compiler 2.1.3. JavaScript backend 2.1.4. WebAssembly ba

    sirocco
    sirocco 2013/03/10
    "Glorious" は「栄光の」と訳されています。リパブリック讃歌のglory glory hallelujahのglory。脱線・・・ハレルヤは「晴れるや」とは関係なくて、ヘブライ語由来で、「主をほめたたえよ」なんですって。
  • Haskell での可変長引数 - 趣味はデバッグ……

    『簡約! λカ娘(4)』読んだ!おもしろかった!で、その中に「Haskell でも printf じゃないか!?」っていう @nushio さんの記事で、可変長引数関数(可変個引数関数)の話があって自分なりに悩んで納得したので忘れないようにメモしておこうと思う。 作りたいもの 作りたい関数は次のようなものとします。型はイメージ。 printf :: (Show arg1, Show arg2, Show arg3, ...) => arg1 -> arg2 ->arg 3 -> ... -> String printf "Hello, world!" :: String -- => "\"Hello world\"" printf 'I' "am" 23 :: String -- => "\'I\' \"am\" 23" 引数の個数? 正確を期すならそもそも Haskell で可変長引数な

    Haskell での可変長引数 - 趣味はデバッグ……
    sirocco
    sirocco 2013/03/07
    同じ関数でも返す型の指定を変えると違った型の値を返す関数がある。クラスのインスタンスが違うのですが、それを利用してprintf のような可変長引数の関数を定義する話です。
  • 変数に型がないということの利点について考えるが盛り上がっているらしい - ログ日記

    http://d.hatena.ne.jp/perlcodesample/20130227/1361928810 完全に間違っているとか正反対のことを言っているとかいう場合は分かりやすいが、全体的にずれていて一部は合ってる感じなので盛り上がっている。 微妙に日語がおかしくて、反論も微妙にずれているので平行線。 他の人とだいぶかぶってるような気もするが、とりあえず一項目ずつ分けて考える。 どのような型の値でも代入できる my $str = 'Hello'; my $num = 1; my $nums = [1, 2, 3]; my $person = {age => 2, name => 'taro'}; my $ua = LWP::UserAgent->new; これは静的型付け言語でもできるので動的のメリットではない。 str = "Hello" num = 1 nums = [1,

    変数に型がないということの利点について考えるが盛り上がっているらしい - ログ日記
    sirocco
    sirocco 2013/03/03
    「変数に型がないということの利点について考える」を書いたのは若い学生さんと推理する人が多かったがPerlの本も書いている経験豊富な方でびっくり。私もきっちりと自分の頭で考えないと駄目だ・・・Orz
  • GitHub - faylang/fay: A proper subset of Haskell that compiles to JavaScript

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - faylang/fay: A proper subset of Haskell that compiles to JavaScript
    sirocco
    sirocco 2013/02/13
    javascript で実装されたhaskellのコードを読んだからThunkの仕組みが分かったのね。すごい。Ruby を思い出して Thunk のオモチャを作り出した。
  • 実装して理解する遅延評価の仕組み 〜 thunkを絵に描いて理解しよう・JavaScriptでHaskellを実装!? - プログラムモグモグ

    この記事では, Haskellに用いられる「遅延評価」の仕組みを, 図に描いて説明します. 更に, 遅延評価版のフィボナッチ数の無限列を, JavaScriptで実装します. 遅延評価とはどのように動くのか, 考えて行きましょう. HaskellのコードとJavaScriptのコードの比較 Haskellでの x = y y = 10 と, JavaScriptの var x = y; var y = 10; というコードを考えてください. Haskellのコードは, これだけでは何も起こりません. print xとすると, x = y = 10 となって 10 が表示されます. 一方, JavaScriptのコードは var x = y; を評価した瞬間, 「ReferenceError: y is not defined」というエラーが出ます. 更に, main = let x = 1

    実装して理解する遅延評価の仕組み 〜 thunkを絵に描いて理解しよう・JavaScriptでHaskellを実装!? - プログラムモグモグ
    sirocco
    sirocco 2013/02/13
    すごい。Haskell の遅延評価の仕組みを、これでもかというほど丁寧に分かりやすく解説している。
  • com

    sirocco
    sirocco 2013/02/08
    cabal install でインストールできるようになったけど、Access のMDBを連続して読み込んで表示するとクラッシュするのは変っていない。
  • 関数型言語を採用するプロジェクトが増加、果たして本当に開発効率は高いのか? | スラド デベロッパー

    ソフトウェア開発に Scala や Haskell、Erlang といった関数型言語を採用する企業が増えているそうだ (ITpro の記事より) 。 関数型プログラミング言語には「迅速に開発できる、バグを抑えやすい、アプリケーションの性能を向上させやすい」といった特徴があるとし、これらは新規のサービス開発に向いているという。「言語選定が競争力に直結」といった意見も記事には掲載されている。 これだけだといいことずくめのようにも聞こえるが、関数型言語は習得しにくく、ライブラリなども C/C++Java と比べるとまだ少ない。使いこなせるプログラマも少なく、関数型言語で大規模システムの設計を行えるエンジニアはまだ少ないのではないだろうか。関数型言語を使える人材はある程度スキルの高い人であり、そのために生産性が高いのではという疑問もある。今後日で関数型言語の採用は進んでいくのだろうか?

    sirocco
    sirocco 2013/02/07
    com-1.2.3 で DB にアクセスすると最初は良いのですがクラッシュしたので自分でCOMを書きました。WIndows のPostgreSQLのドライバも何万件かINSERTをするとクラッシュしたので単純なドライバを書きました。追えるようになりたい。
  • Haskell(GHCi)の:printが面白い - 西尾泰和のはてなダイアリー

    Haskellって、変数に束縛されている値が「評価されている」と「されていない」の状態を持っていて、それがグローバルにあちこちから共有されているから「どれくらいの計算量で終わるか」みたいな議論になるとイメージが掴めなくて困っていた。確認する方法があればいいのになぁ、でも、ないんだろうなぁと、諦めていたが、GHCiである程度できることがわかった。面白いじゃんこれ。 まずこんなソースコードを用意してみる。これは「リストを結合した時点で前半のリストは評価されるのか否か」を実験するためのコード。以前議論になったときに、僕の主張としては「前半を評価しないでも『xsの先頭1個と「xsの残りとysを結合したもの」のcons』を返せば良い。きっとその実装になってるだろう」というものだったのだけど、今までは挙動を観察する方法を知らなかったので議論止まりだった。 xs = [1, 2, 3] ys = [4,

    Haskell(GHCi)の:printが面白い - 西尾泰和のはてなダイアリー
    sirocco
    sirocco 2013/02/03
    「:printは評価を強制せずに値を調べるコマンドだ。」
  • 【またかよ】「Haskellでクイックソート」問題【何度目だ】

    Pin📍AppBrew CTO @spinute クイックソート何行だと思う? rubyが40行、c++が35行、haskellは5行だよ? 大きいのと小さいのにちぎる、空だったら終わる、それが質でそれだけが必要最低限。 クイックソートのイデアは五行に収まるらしい 2013-01-27 00:18:27

    【またかよ】「Haskellでクイックソート」問題【何度目だ】
    sirocco
    sirocco 2013/02/01
    クリックソートのアルゴリズムってこれかと思ったんだけど何が駄目なんだろう http://www.ics.kagoshima-u.ac.jp/~fuchida/edu/algorithm/sort-algorithm/quick-sort.html
  • Start haskell zipper

    1. LLeeaarrnn yyoouu aa HHaasskkeellll ffoorr GGrreeaatt GGoooodd!! ZZiippppeerr 13年1月20日日曜日

    Start haskell zipper
  • Haskellの単体テスト最前線 kazu-yamamoto/unit-test-example · GitHub

    #Haskellの単体テスト最前線 [To English] これはHaskell Advent Calendar 2012の5日目の記事です。 Haskellで作成したパッケージに対して、単体テストを書くための最新情報をお届けします。以下の記事では、Haskell Platform 2014.2.0.0 以降を使うことを前提とします。 ##要約 要点は4つです。 利用者に見せたい振る舞いは、doctest で書く 利用者に見せたくない振る舞いは、hspec で書く テストを自動化するフレームワークとしては Cabal を使う doctest でも hspec でも、純粋なコードに対しては、できるだけ QuickCheck などの性質テストを書く この記事で一番伝えたいのは、3) です。例題としては、Base64 という符号化を取り上げます。Base64 は知っていると仮定して話を進めます

    Haskellの単体テスト最前線 kazu-yamamoto/unit-test-example · GitHub
  • HaskellでOSコマンド実行 - yunomuのブログ

    当たり前の事を当たり前にやりたいよね。 ちょっとしたスクリプトを書く時に、OSのコマンドを実行してその結果をgrepしてcutしてとか、そういう事をよくやる。Haskellでやるかどうかっていうのは別として、そういうのってどうやるんだろうと思って。 grepとかcutとかはHaskell的にはパーサを書くのかもしれないけど、まずはコマンド実行から。 とりあえずコマンド実行 マニュアルを"cmd"とかで検索するとSystem.Cmdとかが出る。 System.Cmd 使い方はこう。 Prelude> import System.cmd Prelude System.Cmd> system "pwd" /home/user ExitSuccess ExitSuccessが戻り値で、画面出力はなんかそのまま標準出力に出ちゃう。 引数があっても > system "netstat -l" と指定で

    HaskellでOSコマンド実行 - yunomuのブログ
    sirocco
    sirocco 2013/01/29
    readProcess
  • Haskell でのデバッグ - あどけない話

    「純粋関数型言語はデバッグしにくい。だって純粋な関数で printf デバッグできないから」とつぶやいている人をよく見かけます。これまで放置してきましたが、リツイートが50を超えたので、Haskellでのデバッグについて書きます。 例外処理と同じように、Haskell でのデバッグでは、純粋な関数と IO を分けて考える必要あります。 IO での printf デバッグ IO では、putStrLn や print が使えるから問題ないですよね? foo :: Int -> IO Bool foo i = do x <- あれして i putStrLn $ "x = " ++ show x これして putStrLn "ここも通過" -- それもする y <- それもする print y return y ちなみに、forkIO 起動した軽量スレッドから putStrLn する場合、軽量ス

    Haskell でのデバッグ - あどけない話
    sirocco
    sirocco 2013/01/13
    例外のデバッグ。コードに derving Show を足すのは難しい状況でも " {-# LANGUAGE StandaloneDeriving #-} \n deriving instance Show a => Show (Tree a)" を書けば Show のインスタンスとして利用できるようになる。