Iva*_*dov 4 haskell hlint sublimetext2
我刚刚开始学习Haskell,"学习Haskell for Great Good".我目前正在阅读"类型和类型类"一章,所以我的知识非常......不存在.我使用Sublime Text 2和SublimeHaskell包,它在每次保存时构建/检查文件.
问题:我正在尝试像这样进行函数类型声明:
funcName :: [Char] -> [Char]
Run Code Online (Sandbox Code Playgroud)
我收到这个警告:
警告:使用找到的字符串:[Char] - > [Char]为什么不:String - > String
建立失败
你能解释一下为什么使用Char数组而不是字符串是一个坏主意,或者给我一个链接来解释可能的反响等等.我用Google搜索,什么也没发现.
PS我是一名C#开发人员,我理解char数组和c语言中的字符串之间的区别.
ert*_*tes 13
在基础库的某个地方你会发现这个定义:
type String = [Char]
Run Code Online (Sandbox Code Playgroud)
它说,String
并且[Char]
是完全一样的东西.您选择哪两个是文档选择.我经常定义类型别名,如下所示:
type Domain = ByteString
type UserName = Text
Run Code Online (Sandbox Code Playgroud)
使用文档类型是个好主意.
另外,作为一个重要的附注,[Char]
不是字符数组的类型,而是字符列表.由于还有实际的数组类型,区别很重要!