将这些haskell Int列表转换为另一个列表的方法有很多种,这里给出一个简单的示例,使用map函数将Int列表转换为字符串列表。 代码语言:haskell 复制 intList::[Int]intList=[1,2,3,4,5]stringList::[String]stringList=mapshowintList 在这个示例中,我们首先定义了一个Int列表intList,然后使用map函数将其转换为...
Int 代表整数,7可以是Int,但是7.2不行,Int是有界的,这意味着有最小值和最大值。 Integer也代表整数,主要区别在于它没有界限,可以用来表示非常大的数字,但是Int效率更高。 Float是真正的单精度浮点数。 Double是真正的浮点数,具有双倍精度。 Bool是布尔类型,只能有两个值:True和False。 Char代表一个字符,用单引...
再将整数转换为浮点数stringToFloat'::UniStringFloatstringToFloat'=uniAlgstringToInt`uniCompose`uniAlgintToFloat-- 示例:将浮点数转换为整数,再将整数转换为字符串floatToString'::UniFloatStringfloatToString'=uniAlgfloatToInt`uniCompose`uniAlgintToString-- 定义统一算法组合uniCompose::Unibc->Uniab->Uni...
具体地说,假如某个类型(比如 Text)实现了 IsString 的话,那么你可以从 String 得到它。 函数返回值的多态类型(adhoc polymorphism) 有了OverloadedStrings 之后,你就可以直接把字符串字面量塞给只接受 Text 的函数了,比如 parseInt::Text->IntparseInts=... 然后直接用字面量做参数 lets="123"letn=parseIntsp...
path_length :: IO Int path_length = length <$> getEnv "HOME" -- 等价于 -- path_length = fmap length (getEnv "HOME") 这创建了一个新的副作用对象,当执行时,会对getEnv的结果应用length函数,并产生相应的结果。 liftA2, liftA3, … 当fmap允许我们转换单个副作用产生的结果时,有时我们需要创建...
g::Int->Int->Int->Stringgn00="FizzBuzz"gn0_ ="Fizz"gn _0="Buzz"gn _ _ = show nf::Int->Stringfn = g n (n `mod`3) (n `mod`5)main= print $ map f [1..100]-- ["1","2","Fizz","4","Buzz","Fizz","7","8","Fizz","Buzz","11","Fizz","13","14","FizzBu...
“穿越”进去的组合函数首先起作用的是read函数,它将String转换为Int,然后这个Int值被喂给组合中的下一个函数takeOff,takeOff接受一个Int值后生成我们的解,一个动作序列[Action],由于<$>穿越之后不改变getLine的结构外壳IO,于是takeOff.read <$> getLine的结果就是IO [Action]。最后我们使用>>=算符打开IO的外壳,...
Int: 带符号的定长整数。 Haskell中不少于28 bit。 Integer: 不限长度的带符号整数。 需要更多地内存和计算量。不会造成溢出。 更可靠。 Double: 浮点数。通常是64 bit。Haskell不推荐使用Float类型, 这会使计算较慢。 特别说明: :: 符号 第一表示类型,第二表示类型签名。例如: exp::T 及表示exp的类型是T...
他左边的参数是String,也就是[Char]。然而getLine的型态是IO String。你不能串接一个字串跟 I/O action。我们必须先把String的值从 I/O action 中取出,而唯一可行的方法就是在 I/O action 中使用name <- getLine。如果我们需要处理一些非纯粹的资料,那我们就要在非纯粹的环境中做。所以我们最好把 I/O ...