タグ

ブックマーク / yunomu.hatenablog.jp (6)

  • record update - yunomuのブログ

    Haskellのrecordを使っているとこういう事をよくやる。 data Test = T { a :: Int, b :: String } updateA :: Test -> (Int -> Int) -> Test updateA t f = t { a = f (a t) } Test型のデータのaをf関数を使って更新したい。 例えばほら、Stateにはmodify関数があるわけじゃないですか。 modify :: (s -> s) -> State s () という感じで、sを更新する関数を引数にとる。実際とはちょっと違うけど。でもレコードでもこういう感じの事がしたい。 具体的にはこう。 update name f rec = rec { name = f (name rec) } recordのフィールドラベルまで引数として渡したいわけです。これコンパイルできないんですけど

    record update - yunomuのブログ
    joan9
    joan9 2013/03/01
    record update
  • Haskellで特定のモジュールのコンパイルが遅すぎる - yunomuのブログ

    1つのモジュールのコンパイルに時間がかかりすぎて、5分間何も出力がなかったとしてビルド失敗扱いされるの、つらいものがある— 就活用アカウントさん (@eagletmt) 2013年1月24日 という話があって。 具体的にはaws-sdk(https://github.com/worksap-ate/aws-sdk)の開発中の話で、 aws-sdkではTravis CI(https://travis-ci.org/)を使ってビルドだけのテストをしているんですが、そのテストっていうかビルドが頻繁に失敗するようになってしまった。 原因はAWS.EC2.Typesのコンパイルで、このモジュールのコンパイルだけで5分以上かかる。その間何も画面出力などはされなくて、Travisでは何も出力がされないまま5分経過するとビルドプロセスが殺されてしまうという。 これはいけませんというか、いや別に普通にTra

    Haskellで特定のモジュールのコンパイルが遅すぎる - yunomuのブログ
  • HaskellでTwitterにpostする - yunomuのブログ

    例によってお酒を飲みながら書いているので文章が冗長です。御託はいいって人は題まで飛ばしましょう。 枕っていうか前置き プログラミング言語選択の理由というのは結局のところライブラリだったり環境にインストールされてるのがそれしかなかったりとか、言語自体がどうこうというのとは関係ない部分で決まったりして。 だからメジャーな言語はひと通りやってると意外な時に役に立ったりすることもあります。Perl, PHP, Ruby, Pythonあたりは2つ3つくらい覚えておくとなにかの役に立つかも。いや「何かの役に立つかも」ってレベルですが、少なくとも私は運が良いのか悪いのか、役立つシーンに遭遇したことがある。 で、 私は最近趣味でプログラミングする時はネットワーク環境が無いところでやる事が多いんです。適当にそこら辺のカフェとかで遊んでいるし、モバイルルータとかも持ってないし。 外で開発してて困ることと言

    HaskellでTwitterにpostする - yunomuのブログ
  • Wai + WarpでWebサーバを作る - yunomuのブログ

    WarpってWebサーバらしいですよ。 いやまあ今回はそういう前置きはいいんですけど、 Yesodの人ことSnoymanさんが作っているWaiとWarpでWebサーバを書いてみようと思います。 まずは調査。 Waiとはなんぞや。 Network.Wai Web Application Interfaceらしいです。単体だとナンノコッチャという感じですが、ドキュメントを見るとHTTPのRequestとResponseっぽい型の定義があって、それらを扱うApplicationという型があります。 定義: type Application = Request -> ResourceT IO Response RequestをもらってResponseを返す関数がApplicationです。まあそのまんまですね。 RequestはHTTPの定義通りなので省略、Responseはなんか若干めんどくさい

    Wai + WarpでWebサーバを作る - yunomuのブログ
    joan9
    joan9 2012/07/21
    Wai + WarpでWebサーバを作る
  • Hoogleをローカルで使う - yunomuのブログ

    Haskellのマニュアル検索のHoogleってシステムがある。 http://www.haskell.org/hoogle/ 便利なんだけど、manに慣れた我々としてはコマンドで使いたいじゃない。Erlangもmanっぽいの用意してくれてるし。 ということで、パッケージがありそうなので入れてみることにしました。 % cabal install hoogle 何故か、コマンドは入らないけどライブラリだけできてるっぽかった? なんかもう先に進んじゃったからよくわかんないけど、エラーメッセージを見ながら、確かnetworkパッケージをupgradeした。と思う。 パッケージを入れ直してcabal install hoogleしたらとりあえずhoogleコマンドが使えるようになった。 さっそく使ってみる。なにはなくともhelpである。 % hoogle --help Hoogle v4.2.9,

    Hoogleをローカルで使う - yunomuのブログ
  • Stateモナドとモナドトランスフォーマー - yunomuのブログ

    前フリ 最近@seizansさんが新人Haskell使いを増やしまくっている。 で、その人達がググった時のために先にたくさんブログ記事書いて釣ろうぜっていう話をしていたけど、@kazu_yamamotoさんとか@nom4476さんらが仰るように、一旦自分がわかってしまうとなかなか記事を書く気力が起きない(し、子育てで忙しいので後は任せたって言われた)。 そうこうしているうちに@seizansさんがすごい勢いでHaskell力を伸ばしはじめた。 なので最近彼が覚えたらしいモナドトランスフォーマーの入門的な記事をStateモナドと合わせて先回りして書いてしまおうというわけす。引用数を稼ぐには先手必勝です。 Stateモナド Haskellで一時的な状態を持たせたい時はStateモナドを使うらしいですよ。 といっても何が何だかよくわかんないんですけど、 状態モナド遊び - あどけない話 この記事

    Stateモナドとモナドトランスフォーマー - yunomuのブログ
    joan9
    joan9 2012/06/24
    yunomuのブログ
  • 1