Haskell で可変長引数を扱う方法
Polyvariadic function = 多相的(polymorphic) かつ 可変長(variadic) な関数ですか。 http://okmij.org/ftp/Haskell/polyvariadic.html#polyvar-fn
2010-10-15 14:50:45で、Monoid クラスのインスタンスとなる型の値に対し、polyvariadic に振舞う Monoid を提供するのが polyToMonoid の役割だそうです。 http://hackage.haskell.org/package/polyToMonoid
2010-10-15 14:54:25Data.PolyToMonoid のドキュメントConceptやExamplesを見てみると、ptm (polyToMonoid) 関数が polyvariadic な mappend 関数として振舞っているのが良く分かると思います。 http://bit.ly/9dQFE6
2010-10-15 14:59:43いや、このパッケージが提供するのは、やっぱり polyvariadic に振舞う Monoid でいいかな、とサンプルを見て思いました。 RT @shelarcy: s/Monoid/mappend/
2010-10-15 15:03:59型クラスで polyvariadic かつ型安全なものを目指すと、型エラーが大変なことに……
XML/HTML の作成 (Haskell as a markup language) http://t.co/soko0w4t http://t.co/fNsha9AD QT @sbwhitecap: 急募 Haskellの用途
2011-10-19 14:50:32@sbwhitecap .。oO(ただ、polyvariadic (可変長(variadic) かつ 多相的(polymorphic)) な関数を実現するために使われているテクニックのせいで型エラーが凄いことになるので、初心者にはお勧めしません……)
2011-10-19 14:58:45型安全な printf/scanf
文字列をパースしない仕様
型安全な printf といえば liboleg ですね http://hackage.haskell.org/package/liboleg
2010-02-23 01:28:19文字列をパースしなくてよければ、型安全で Coq で正しさが証明されている printf の実装もあります。 http://t.co/B1I3GvR
2011-08-20 13:07:45おなじみの(限定継続版)型安全 printf http://t.co/Xzegj42y #ICFP #CW2011 #ICP2011
2011-09-24 16:09:02@ranha あれっ? @ranha さんは "Fun with Type Functions" を読みませんでしたか? 確か、GADT で型を作って型族(Type Families)で return type を計算する、というやり方が紹介されていたと思いますが。
2009-09-18 01:09:09"Fun with Type Functions" のページ http://www.haskell.org/haskellwiki/Simonpj/Talk:FunWithTypeFuns
@ranha まあ……元となったアイデアは、まさに oleg さんの継続を使って printf の GADT 版だったりするわけですが。 http://article.gmane.org/gmane.comp.lang.haskell.general/16405
2009-09-18 01:12:01なお、(liboleg に収録されている) oleg さんによる型安全な printf/scanf の実装は他にも色々とあります。 http://okmij.org/ftp/typed-formatting/FPrintScan.html
文字列をパースする仕様なら Template Haskell や将来の型拡張が必要
#LLplanets やっているみたいなので、流しておきましょう。Template Haskell 版 printf http://t.co/ptgDZ1y 、 http://t.co/XpbCBfE の Text.Printf.Mauke.TH
2011-08-20 12:59:40あと、将来的に文字列を型レベルに持ち上げることができるようになれば、Template Haskell なしでも文字列をパースして型安全に振舞うような printf が書けるようになるかもしれません。 http://t.co/h4veMPD
2011-08-20 13:12:52@xyx_is 将来の GHC では、Template Haskell なしでもソースコード上の文字列をその文字に対応する型として扱えるようになるという噂が c.f. http://t.co/PE1BKI4p http://t.co/aotUYnAS の 8.3 > printf
2011-11-15 21:51:58GHC 7.4.1 で入る PolyKinds 言語拡張では、Bool や [] のような Haskell で定義されたデータ型を型レベルに昇格させることはできますが、まだ 1 のような数値や "foo" のような文字列などの組み込みの型を型レベルに昇格させることはできません。
おまけ:種多相
Haskell 98/2010 では種(型の型)を単相的に扱わなければならず、型の引数の数が違うと、型クラスのインスタンスを別に用意しなえければなりませんでした。GHC 7.4.1 に入る PolyKinds という言語拡張では、多相種を利用できるようになり、引数の数ごとに別のインスタンスを用意しなくても良くなります。
GHC HEAD にて、ユーザーガイドに PolyKinds 言語拡張で有効になる種多相(kind polymorphism)と、データ型を型レベルに昇格する(promote)機能に対する説明が加わりました。 http://t.co/e4EiEB4Q
2011-11-26 02:28:24