[SIMILAR] WITH 57728 mayberead WITH 49481 parseline WITH 26885 values WITH 24740 mkname WITH 23246 frommaybe WITH 22766 string WITH 17797 定項 WITH 17724 import WITH 16493 catmaybes WITH 16493 templatehaskell WITH 15725 maybe WITH 14000 nothing WITH 12846 haskell WITH 12128 config WITH 11138 parse WITH 10115 language WITH 9349 just WITH 8612 keys WITH 8246 型付 WITH 8246 expq WITH 8246 varstricttype WITH 8246 stricttype WITH 8203 lookup WITH 7620 deriving WITH 7438 。{- WITH 7213 reads WITH 6553 case WITH 6548 monad WITH 5623 定フ WITH 5415 sequence WITH 5156 tail WITH 4875 template の検索結果 161 件中 1 - 10 件目 (0.077364852 秒)
キーと値からなる設定ファイルをパースするとします。設定ファイルはこんな感じです。 name=Test value=5 マップなどで値を持つという方法もありますが、ちゃんと型付けするために専用の型を用意することにします。そうするとパースするコードはこんな感じでしょうか。 import Control.Monad import Data.Maybe ...
Haskellにはバイナリを読み書きする時に使えるBitSyntaxというライブラリがあります。rubyで言うところのpackとかunpackに近いでしょうか。パースする時には返り値の型が引数に依存するので、その部分のコードはTemplate Haskellになっています。例えば、tzfile形式のファイルをパースするならこんな感じになり ...
# (スコア:2767)
Haskellで正規表現リテラルは、正規表現のリテラルというよりは、ヒアドキュメントっぽいもの + IsStringクラスを使った文字列からRegexへの変換という趣です。正規表現の作成自体もQuasiQuoteでやるならばこんな感じでしょうか。 {-# LANGUAGE TemplateHaskell, ScopedTypeVariables #-} module RegexQQ where ...
# (スコア:2562)
Maybeの中の値を元に、Maybe自体をNothingにしたいケースが結構あります。例えば、Maybe Stringで中の文字列が空の場合にはNothingにしたいケースなどです。 nonEmptyString :: Maybe String -> Maybe String nonEmptyString s = case s of Just s | s /= "" -> Just s _ -> Nothing これを少し一般化すると、こ ...
# (スコア:2534)
mime-string-0.3で、MIME形式のメッセージを処理するときに、コメントが入っているとうまく扱えないことがあります。以下のパッチで直ります。 diff -ur mime-string-0.3.orig/Codec/MIME/String/Headers.hs mime-string-0.3/Codec/MIME/String/Headers.hs --- mime-string-0.3.orig/Codec/MIME/String/Headers ...
# (スコア:2343)
たとえばこんなクラスがあるとして、 class ToString a where toString :: a -> String 以下の型にインスタンスを宣言することを考えます。 newtype Wrap a = Wrap a 普通のインスタンス宣言は、たとえばこんな感じ。 instance Show a => ToString (Wrap a) where toString (Wrap x) = "Normal:" ++ show x たと ...
# (スコア:2254)
GHC 6.12でDeprecatedになるらしいImpredicative Polymorphismをどうやって書き換えるのか考えてみました。 例えばこんなの。 {-# LANGUAGE ImpredicativeTypes, Rank2Types #-} f :: Maybe (forall a. [a] -> a) -> (Int, Char) f (Just g) = (g [1, 2, 3], g ['a', 'b']) f Nothing = (99, 'z') のように定義 ...
# (スコア:2250)
試しに書いてみたアドレス帳のスキーマ(in RELAX NG Compact Syntax)です。こんな感じで他の設定ファイルについても書いておくとわからなくならないですね。コメントなんかもつけたら別のところにまとめて置きたい所です。 datatypes xsd="http://www.w3.org/2001/XMLSchema-datatypes" element addressBook ...
# (スコア:2216)
Invalid TextNewCGIはCGIモナドで、DBのアクセスはIOモナドの中で行われるので、もはや関数型というよりは単なる手続き型にしか見えません… import Control.Monad.Trans import Data.Maybe import qualified Database.HDBC as DB import qualified Database.HDBC.ODBC as ODBC import IO import Network.NewCGI ...
# (スコア:2174)
もっとも簡単そうな方法 data Animal1 = Dog1 String | Cat1 String Int call1 :: Animal1 -> String call1 (Dog1 name) = name call1 (Cat1 name whiskers) = name ++ " with " ++ show whiskers ++ " whiskers" test1 = mapM_ (putStrLn . call1) [Dog1 "pochi", Cat1 "tama" 12] 簡単だけれど、種類を増やす ...
# (スコア:2151)
# (スコア:10000)