タグ

ブックマーク / debug-ito.hatenablog.com (5)

  • stackageの特定のresolverに上がっているパッケージバージョンを調べるツール - DebugIto's diary

    指定したHaskellパッケージのバージョン番号が指定したstackage resolverでいくつなのかを調べるコマンドラインツールを作った。 staversion: What version is the package X in stackage lts-Y.ZZ? 例えばこのように使う。 $ staversion --resolver lts-4.2 --resolver lts-7.0 conduit base ------ lts-4.2 conduit ==1.2.6.1, base ==4.8.2.0 ------ lts-7.0 conduit ==1.2.7, base ==4.9.0.0自分はHaskellパッケージを作る際、travis-CIを使ってresolverはいくつか変えながらテストを回し、その結果を依存先パッケージのバージョン範囲(.cabalファイルのb

    stackageの特定のresolverに上がっているパッケージバージョンを調べるツール - DebugIto's diary
  • Zipper関連のパッケージ - DebugIto's diary

    先日コーディングしていてZipperが必要になる場面に出くわした。それは単純なList zipperだったので自前で実装して済ませたが、ふと、汎用的なZipperライブラリがあるかどうかが気になったので、少し調べた。 syz syz: Scrap Your Zippers Dataクラスインスタンスのデータ型からZipperを作れる。 データコンストラクタで作られるツリーをたどるようなものに見える。 traverse-with-class traverse-with-class: Generic applicative traversals 依存関係が小さい syzの改良版らしい。 GTraversableという独自クラスのインスタンスについてZipperを作る(?) uniplate uniplate: Help writing simple, concise and fast gene

    Zipper関連のパッケージ - DebugIto's diary
  • Haskellでの名前空間管理 - DebugIto's diary

    ここ最近、性懲りもなくまたHaskellを書いてみている。少しずつコツがつかめてきたのか、以前よりストレスなく書けるようになってきたと思う。(Perlに比べると書くスピードは半分くらいだが) ただ、ある程度の大きさのプログラムを1枚のファイルに書いていると、そのファイルの名前空間がどんどん散らかってきてキツいと感じるようになってきた。 Haskellで外部のモジュールを使うときはimport文を使う。 import Hoge (hoge) foo x = hoge (x + 1) この場合、モジュールHogeからインポートしたシンボルhogeはファイル全体で有効になる。つまりファイルごとに名前空間があり、そこにシンボルが追加されるという格好である。 また、以下のようにすると、シンボルへのアクセスに修飾語が必須となる。 import qualified Hoge as H foo x = H

    Haskellでの名前空間管理 - DebugIto's diary
  • どれほどのHackageにChangelogがないのか調べてみたHaskellで - DebugIto's diary

    Haskellを勉強し始めて驚いたのが、あまりにも多くのHackage(Haskellにおけるライブラリパッケージ)にChangelogが存在しないことだ。 当たり前だが、Changelogがなければモジュールのバージョン間の変化を俯瞰することができない。Haskellの文化では互換性を破壊するモジュールの変更がある程度許容されるそうなので、このことは著しい不便を生むことがある。(ただし、Cabalパッケージ間の変化を調査するprecisというプログラムもあるようだ) しかし、「ChangelogのないHackageが多い」というのはあくまで主観的な印象であり、そのようなHackageが正確にいくつあるのかは分からなかった。そこで、Haskellの練習がてらこれを調べてみた。 調査方法 Hackageの公式レポジトリはhackage.haskell.orgであり、現在公開されているHack

    どれほどのHackageにChangelogがないのか調べてみたHaskellで - DebugIto's diary
  • Lensメモ - DebugIto's diary

    ここ最近、少し思うところあってHaskellのLensについて勉強していた。 Lensに関するドキュメントをいろいろ探したが、このドキュメントが非常に分かりやすかった。 Zippers and lenses: http://www.scs.stanford.edu/14sp-cs240h/slides/lenses-slides.html#%281%29 "Real World Haskell"の共著者であるBryan O'SullivanによるStanford大の講義スライドらしい。Zipperから話を始めてLensの説明をしている。ZipperについてはすごいHにも解説があるので、Zipperをある程度理解していれば比較的カンタンに理解できる内容だろう。 ただ、講義スライドの(41)〜(47)あたりはこれだけでは少々わかりにくいと思った。ここはZipperからLensに話が移行すると

    Lensメモ - DebugIto's diary
  • 1