[SIMILAR] WITH 7748 bytestring WITH 7748 foldable WITH 5415 sequence WITH 5027 新ラ WITH 2874 data WITH 2569 haskell WITH 2525 目新 WITH 1429 network WITH 550 ラリ WITH 379 text WITH 301 ブラ WITH 295 イブ WITH 142 ライ WITH 1 [ WITH 1 ] WITH 1 ghc WITH 1 6 WITH 1 . WITH 1 の新 WITH 1 time WITH 1 cgi WITH 1 regex WITH 1 xhtml WITH 1 (お WITH 1 おそ WITH 1 そら WITH 1 らく WITH 1 く他 WITH 1 他に WITH 1 にも WITH 1 も色 WITH 1 色々 の検索結果 155 件中 1 - 10 件目 (0.141463652 秒)
Data.ByteString Data.Foldable Data.Sequence Data.Time Network.CGI Text.Regex Text.XHtml (おそらく他にも色々あるのでしょうが、)このあたりが目新しいところでしょうか。 ...
The Monad.ReaderのIssue 13に掲載されたThe Typeclassopediaという記事が、Functor, Monad, Monoid, Applicative, Foldable, Traversable, Arrowといったような型クラスについて良くまとまっていて、そのあたりを知りたい時の取っ掛かりになりそうだったので翻訳してみました。 作者のBrent Yorgeyさんからも許 ...
# (スコア:5792)
Haskellにはバイナリを読み書きする時に使えるBitSyntaxというライブラリがあります。rubyで言うところのpackとかunpackに近いでしょうか。パースする時には返り値の型が引数に依存するので、その部分のコードはTemplate Haskellになっています。例えば、tzfile形式のファイルをパースするならこんな感じになり ...
# (スコア:5734)
Maybeの中の値を元に、Maybe自体をNothingにしたいケースが結構あります。例えば、Maybe Stringで中の文字列が空の場合にはNothingにしたいケースなどです。 nonEmptyString :: Maybe String -> Maybe String nonEmptyString s = case s of Just s | s /= "" -> Just s _ -> Nothing これを少し一般化すると、こ ...
# (スコア:5630)
by Brent Yorgey <first initial last name at cis.upenn.edu> 標準Haskellライブラリには、代数や圏論に裏打ちされた数多くの型クラスが用意されています。流暢なHaskellハッカーになるためには、これら全てに根本的に慣れ親しんでいる必要がありますが、慣れ親しむためには、しばしば山ほどのチュートリアルや ...
# (スコア:5036)
Invalid TextData Familiesは、型パラメータに依って実装を変えたいときに使えます。C++のテンプレートでの特殊化みたいなものでしょうか。 {-# LANGUAGE TypeFamilies #-} import qualified Data.Sequence as Seq data family Vector a -- BoolのVectorはリストで表現 data instance Vector Bool = BoolVector ...
# (スコア:4481)
上の例だと、GADTを使っても同じような事ができます。 {-# LANGUAGE GADTs #-} import qualified Data.Sequence as Seq data Vector a where BoolVector :: [Bool] -> Vector Bool IntVector :: Seq Int -> Vector Int add :: a -> Vector a -> Vector a add v (BoolVector l) = BoolVector $ v:l add v (IntVe ...
# (スコア:4481)
キーと値からなる設定ファイルをパースするとします。設定ファイルはこんな感じです。 name=Test value=5 マップなどで値を持つという方法もありますが、ちゃんと型付けするために専用の型を用意することにします。そうするとパースするコードはこんな感じでしょうか。 import Control.Monad import Data.Maybe ...
# (スコア:3172)
Typeableのインスタンスにするために、 data X = X instance Typeable X where typeOf _ = mkTyConApp (mkTyCon "X") [] のようなことをやっていたのですが、 data X = X deriving Typeable とできるのですね…(-fglasgow-extsが必要です)。 ...
# (スコア:2586)
std::mem_funと同じような感じで、構造体のメンバにアクセスできるといいなと思って作ってみました。 template<class T, class U> struct mem_data_t : public std::unary_function<T, U> { mem_data_t(U T::*p) : p_(p) {} U operator()(T* p) const { return p->*p_; } U T::*p_; }; template<class T, class ...
# (スコア:2039)
# (スコア:10000)