タグ

haskellとtipsに関するrydotのブックマーク (7)

  • Re: Haskellの勉強で詰まってる部分 - maoeのブログ

    mizchi.hatenablog.com Haskellを習得する上で難しいポイントだと思います。大きく分けると次の二つにまとめられるのではないかと思います。 コードの中で現れる識別子からそれが何なのかを探しづらい Cabalがつらい それぞれ個人的な見解を書いてみます。 コード中の識別子の探し方 モナドのところの <$> とか <*> とか、え〜どっちがApplicativeで何がFunctorだっけ、そもそもその定義はなんだったっけ。え〜あ〜〜〜みたいになる。 と名前空間の そして名前で役割を推測することが困難な事が多々ある。mapM_ とか、前述した演算子とか。いや mapM_ は map があって mapM があって、っていう段階があるのは理解しているけど、ソース読んでて突然出現するそれには全く対応できない。 はどちらも識別子から型がわかれば大部分が解決します。ありがたいことに近

    Re: Haskellの勉強で詰まってる部分 - maoeのブログ
  • たのしいHaskellのツールチェインとC++ - 純粋関数空間

    というタイトルで、先日、社内の公開セミナーで話しました。 発表資料はこちら。 Haskellのテストフレームワークとベンチマークフレームワークがよくできているので、 これをC++でも使えるんじゃないかという内容です。 概要 背景として、QuickCheck をもっと多くの人に知って/使って貰いたいというのがあります。 QuickCheckは、普段から使っている人間からすると、よくいろいろなバグを拾ってくれるとても便利なものなのですが、 残念ながら普段開発に利用しているC++には相当のもので完成度の高いものが見当たりません。 だからといって、そこから作るためにC++のテンプレートをいじくりまわすには、私はもう老いてしまいました (与えられた関数にランダムな入力を与えるだけなら簡単なのですが、ジェネレータを自由にいじれる機能がやはり欲しいところで)。 そう思った時に、FFIを使えてQuickC

  • Haskell ポインタープログラミング - あどけない話

    早いもので、今年も12月25日となりました。メリークリスマス! うちのちびっ子怪獣たちも、サンタさんに書いた手紙通り、レゴをもらってご満悦のようです。 そして今日は、Haskell Advent Calendar 2013 の最終日でもあります。 Haskellらしい? 「純粋なコードで構成するのが Haskell らしいプログラムであり、IOはHaskellらしくない」という発言をよく耳にします。 確かに、命令プログラミングの世界から関数プログラミングの世界にやってきたとしたら、 不変データを使った永続データプログラミング 部品プログラミング 純粋なコードに対する性質テスト などには、衝撃を受けることでしょう。 でも、純粋なコードは、Haskell の世界の半分でしかありません。そこは、コンパイラーという保護者に守られた未成年の世界です。Simon Peyton Jones さんの言葉を

    Haskell ポインタープログラミング - あどけない話
  • 2013年8月現在のHaskell開発環境 - maoeのブログ

    以前はHaskell Platformを使っていたのだけど、Cabalの依存関係ソルバがあまり賢くなかったこともあり、いわゆるdependency hellに陥ることが多かった。それからというものHaskell Platformを使わない環境を使っている。OS Xでは公式のインストーラやらHomebrewやMac Portsなど幾つかの方法が用意されているが、こんな方法もあるよということで紹介してみよう。 GHCのインストール GHCのリリース版は自分でビルドしない。時間が掛かるから。インストーラは使わずにtarball版を使う。これはインストール先を自分で指定したいため。 tar zxvf ~/Downloads/ghc-7.6.3-x86_64-apple-darwin.tar.bz2 cd ghc-7.6.3/ ./configure --prefix=/usr/local/ghc/

    2013年8月現在のHaskell開発環境 - maoeのブログ
  • GHC と gold - あどけない話

    GHCのコンパイル速度は、お世辞にも速いとは言えないのだが、一番イライラするのはリンクが遅いこと。これは GNU ld が遅いからである。という訳で、速いと言われる gold を使うためのメモ。 GHC 7.6.3 までは gold が使えない。なぜなら、GNU ld 固有のオプションである --hash-size と --reduce-memory-overheads がハードコードされており、これらを gold がサポートしてないからだ。 GHC 7.8 以降からは、リンカーに応じてオプションを変えるようになる。僕は GHC head で試した。以下のいずれかをやると、gold が使える。 ld のシンボリックリンクを ld.gold に向ける (Linux で binutils-gold をインストールするとこうなる。) cabal に --with-ld=ld.gold を指定する

    GHC と gold - あどけない話
  • Vimで心地良い自動インデント設定を書くためのポイント9個 | Webシステム開発/教育ソリューションのタイムインターメディア

    問題 Vimではデフォルトで500種類以上の言語をシンタックスハイライトすることができます。 また、シンタックスハイライト以外の設定も充実しており、 デフォルトでは約100種類の言語で専用の自動インデントが行われるようになっています。 この約100種類は普段使用する範囲ならば何の問題もないのですが、 人口比率の少ない言語で何かを書こうとしたら デフォルトでは専用インデント設定がなかったというケースは案外あります。 文法がC系の言語であれば'smartindent'で誤魔化すことができるのですが、 人口比率が少ない言語は大抵の場合 'smartindent' が使えない言語です。 という訳で独自の自動インデントの設定を書く必要が出てきました。 しかしどう書けばよいのでしょうか。 解決方法 例として Haskell 用のインデント設定を書くことにしましょう。 Haskellはメジャーな言語では

    Vimで心地良い自動インデント設定を書くためのポイント9個 | Webシステム開発/教育ソリューションのタイムインターメディア
  • 非決定計算としてのリストモナド - 純粋関数空間

    最近のHaskell 最近はHaskellに関するブログ記事をちらほら見かけるようになって来ました。 日々のスクリプトに使おうとしようという人もいるようで、 http://d.hatena.ne.jp/aya_eiya/20120221/1329836207 このようなブログ記事を見かけました。 Haskellで書いたらそんなに汚いコードにはならないというのはたしかにあります。 やってはならないということがHaskellには比較的少ないのだと思います。 というのも、Haskellでは、やってはいけないことがそもそもできないようになっているか、 やることが極めて難しくなっている(unsafeプリフィックスを持つ関数を駆使したりなど) ことが多いのです。 しかし、そんなHaskellのプログラムも、少し工夫すればもっと良くなることもあります。 列挙問題 先ほどのブログの記事の1つ目のプログラム

  • 1