一个Hashell模块

来源:互联网 发布:c语言判断质数 编辑:程序博客网 时间:2024/06/15 10:12


1.暴露模块的接口

module ModuleName (XXX) where

XXX为暴露的内容


2.导入模块

import XXX

XXX为模块名


3.代码来之Real World Haskell


定义Json

SimpleJSON.hs

module SimpleJSON    (        JValue(..)    ,   getString    ,   getInt    ,   getDouble    ,   getBool    ,   getObject    ,   getArray    ,   isNull    ) wheredata JValue = JString String            | JNumber Double            | JBool Bool            | JNull            | JObject [(String, JValue)]            | JArray [JValue]              deriving (Eq, Ord, Show)getString :: JValue -> Maybe StringgetString (JString s) = Just sgetString _           = NothinggetInt (JNumber n) = Just (truncate n)getInt _           = NothinggetDouble (JNumber n) = Just ngetDouble _           = NothinggetBool (JBool b) = Just bgetBool _         = NothinggetObject (JObject o) = Just ogetObject _           = NothinggetArray (JArray a) = Just agetArray _          = NothingisNull v            = v == JNull


4.Demo8.hs

module PutJSON whereimport Data.List (intercalate)import SimpleJSONrenderJValue :: JValue -> StringrenderJValue (JString s)   = show srenderJValue (JNumber n)   = show nrenderJValue (JBool True)  = "true"renderJValue (JBool False) = "false"renderJValue JNull         = "null"renderJValue (JObject o) = "{" ++ pairs o ++ "}"where pairs [] = ""pairs ps = intercalate ", " (map renderPair ps)renderPair (k,v)   = show k ++ ": " ++ renderJValue vrenderJValue (JArray a) = "[" ++ values a ++ "]"where values [] = ""values vs = intercalate ", " (map renderJValue vs)

5.Main.hs

module Main (main) whereimport SimpleJSONmain = print (JObject[("foo",JNumber 1),("bar", JBool False)])



0 0
原创粉丝点击