はてな使ったら負けだと思っている deriving Haskell このページをアンテナに追加 RSSフィード

2012-02-09

ghc-pkg-autofix-0.2.0 をリリースしました。

| 00:59 |  ghc-pkg-autofix-0.2.0 をリリースしました。 - はてな使ったら負けだと思っている deriving Haskell を含むブックマーク はてなブックマーク -  ghc-pkg-autofix-0.2.0 をリリースしました。 - はてな使ったら負けだと思っている deriving Haskell

壊れたパッケージ依存関係を修復するユーティリティ、ghc-pkg-autofix の新バージョンをリリースしました。

cabal-install を使っていると、既にインストールしたパッケージなのに勝手に上書きインストールしてしまって依存性が壊れてしまう、と云ったことがよく起こりますが*1、大抵の場合パッケージの Hash 値を合わせてやれば何とかなります。それを自動でやってくれるのがこのツールです。


今回のバージョンアップで今までの機能に加え、cabal-devの sandbox の依存関係も修復出来るようになりました!

と云う訳で、役にたてば幸いですー

*1:新しい cabal-install ではそういうのはデフォルトではしないようになったらしいですが

トラックバック - http://haskell.g.hatena.ne.jp/mr_konn/20120209

2011-02-21

ghc-pkg-autofix-0.1.3 を公開しました

|  ghc-pkg-autofix-0.1.3 を公開しました - はてな使ったら負けだと思っている deriving Haskell を含むブックマーク はてなブックマーク -  ghc-pkg-autofix-0.1.3 を公開しました - はてな使ったら負けだと思っている deriving Haskell

ghc-pkg-autofix に "-" が入ったパッケージ名を正しく扱えないと云うバグがあったので直しました。

ひどすぎる……。こちらからどうぞ

トラックバック - http://haskell.g.hatena.ne.jp/mr_konn/20110221

2011-02-20

破壊された依存性を解決するための ghc-pkg-autofix をリリースしました

|  破壊された依存性を解決するための ghc-pkg-autofix をリリースしました - はてな使ったら負けだと思っている deriving Haskell を含むブックマーク はてなブックマーク -  破壊された依存性を解決するための ghc-pkg-autofix をリリースしました - はてな使ったら負けだと思っている deriving Haskell

重要:0.1.2にはバグがあったので、入れた人は最新版にしといてください!

cabal-install はべんりでこれのない生活ちょっと考えられないって感じですが、妙なところが不便ですよね。

よくあるのが、なぜか既にインストールされているバージョンのパッケージを勝手に上書きインストールして、package id がかわってしまうためにそれに依存しているパッケージが壊れてしまったり。

こういう悲しい事故は割と頻繁に起こって、その度に .ghci/*/package.conf.d/hoge.conf とかを書き直して ghc-pkg recache --user しないといけないわけですが。

流石にこういう作業が多すぎるので、それを自動化するツールを書きました。

それが ghc-pkg-autofix です。GitHubレポジトリはこちら

ご利用は USE AT YOUR OWN RISK と云うことで。

やっていることは簡単で、

  1. ghc-pkg check
  2. dependency が壊れているパッケージを検出
  3. 壊れた依存先の新しい package id (Hash 値?) を見付けて
  4. .conf ファイルを書き直し
  5. ghc-pkg recache --user

と云う作業をしています。今のところ壊れている奴は全部直そうとしていて、今後のアップデートで一部のライブラリだけ直せるようにしたりとかするかもしれません。

使い方は単純で、たとえば、

$ ghc-pkg check
There are problems in package authenticate-0.7.2.3:
  dependency "tagsoup-0.12-68a50e968bc5c990d3a358f4dbde8e22" doesn't exist
There are problems in package lambdabot-utils-4.2.1:
  dependency "tagsoup-0.12-68a50e968bc5c990d3a358f4dbde8e22" doesn't exist
There are problems in package xss-sanitize-0.2.4:
  dependency "tagsoup-0.12-68a50e968bc5c990d3a358f4dbde8e22" doesn't exist

みたいになってるときに

$ ghc-pkg-autofix

を実行すれば勝手によろしくやってくれます。

まだまだ荒削りなので、github とかでどんなことをやっているか確認してみてもいいかもです。


何か機能提案とかバグとかあったら教えてください。

追記:対象は package 単位で conf を管理する様になったヴァージョンからなので、 6.8だか6.10だかでは動かないと思います。すんません。

トラックバック - http://haskell.g.hatena.ne.jp/mr_konn/20110220

2010-09-06

derive-IG-0.1.1 を公開しました。

|  derive-IG-0.1.1 を公開しました。 - はてな使ったら負けだと思っている deriving Haskell を含むブックマーク はてなブックマーク -  derive-IG-0.1.1 を公開しました。 - はてな使ったら負けだと思っている deriving Haskell

instant-generics の Representable クラス及び Constructor クラスを derive する為のライブラリ、derive-IGを公開しました。

http://hackage.haskell.org/package/derive-IG-0.1.1

ソースは GitHubにあるのでどうぞ。

昨日の日記に書いたものの体裁を整えたもので、shelarcy さんの助言に基づいて幾つか機能拡張・改良をしています。

こんな感じで使います。

{-# LANGUAGE TypeFamilies, TypeOperators #-}
import Generics.Instant
import Generics.Instant.Derive      -- derive-IG の関数

data HList a b = a :- b | HNull

-- Either に Representable と Constructor を deriving
$(derive ''Either)

-- 三つ組 に Representable と Constructor を deriving
-- derive をつかうと、(,,) に対応する型が GHC_Types_(,,)_(,,)とかになってしまうので
-- 構築子に対応する型名前を個別に指定している
$(deriveWith ''(,,) [Just "Triple_Triple_"])

-- HNull は自動生成される Main_HList_HNull のままで問題ないので
-- (:-) に対してだけ新しく型名を指定している。
-- 構築子の定義順に、型名指定をすればよい。末尾のNothingは省略可。
$(deriveWith ''HList [Just "Main_HList_HCons", Nothing]

... some nice, great code ...

上では$()で包んで書きましたが、6.12.x系統では他の構文と曖昧にならなければ、splice は省略出来るので

derive ''Either

と書く事が出来ると思います。

また、何らかの事情で Constructor / Representable どちらか一方のみ derive したいといった場合の為に、

  • deriveRep
  • deriveRepWith
  • deriveCon
  • deriveConWith

と云った関数も提供しております。

演算子も一応処理出来る様にはなっていますが、 reify で結合性を取ってこれないので、今のところは演算子か否かの判定しか行なっていないと思ってください。なので、型演算子については Constructor を自前で定義して、 Representable は derive、といった使い方が良いかと思います。

トラックバック - http://haskell.g.hatena.ne.jp/mr_konn/20100906

2010-06-29

graph-utils-0.3.7 をリリースしました。

|  graph-utils-0.3.7 をリリースしました。 - はてな使ったら負けだと思っている deriving Haskell を含むブックマーク はてなブックマーク -  graph-utils-0.3.7 をリリースしました。 - はてな使ったら負けだと思っている deriving Haskell

式クォートを型多相に対応した graph-utils-0.3.7をリリースしました。


変更点は、昨日の記事に書いてあることだけで、やっぱりパタンマッチの性質上、型多相に対応するのは無理だろうと結論したので、対応は当分しないことにしました。

まああとパーサがいい加減酷い状態なので、ちゃんと綺麗に書き直して、もっと自由度が高く書ける様にしたいと思います。

トラックバック - http://haskell.g.hatena.ne.jp/mr_konn/20100629