我需要创建一个功能f:: Log->[String]
来做到这一点 (((o, i ,d),s) = [(o, i ,d)]
type Log = (Plate, [String])
type Plate = (Pin, Pin, Pin)
type Pin = (Char, Int)
我需要创建一个功能f:: Log->[String]
来做到这一点 (((o, i ,d),s) = [(o, i ,d)]
type Log = (Plate, [String])
type Plate = (Pin, Pin, Pin)
type Pin = (Char, Int)
如果您在这样的页面上,请单击右侧的“来源”,在您感兴趣的功能旁边。
如果您需要查找功能,Hayo!Hoogle会将您链接到上述文档页面。
需要注意的重要一点是,show
它没有一个定义。show
是为Show
(大写“S”)类型类中的所有数据类型定义的函数。例如,这里是Show typeclass的完整源代码。Show 在类型类中被定义为 just show :: a -> String
。但是,如果您搜索“instance Show Bool”或“instance Show Int”,您会找到具体的定义。
对于您问题的第二部分,获取show
新类型函数的最简单方法是简单地deriving (Show)
在它下面写。例如,
data Foo = Foo Int Int
deriving (Show)
现在我可以使用show
type 的数据了Foo
。
使用hoogle查找此类信息。
示例:http ://www.haskell.org/hoogle/?hoogle=show
在列表中找到您想要的功能后,单击此处,您将Source
在页面右侧找到一个链接。
注意这是对原始问题的回答:
我在哪里可以看到 haskell 中预定义函数的代码?主要是函数SHOW?
g :: Log -> [String]
g (plate, _) = [show plate]
确实可以使用 Hoogle 搜索 Prelude(和其他模块)中定义的函数,但源代码本身位于 Hackage。
Hackage是 Haskell 软件包的数据库。您可以从中下载新包,还可以查看数据库中每个包的 Haddock 文档。
这是标准 Prelude 的 Haddock 页面。它记录了 Prelude 模块导出的类型类、数据类型、类型和顶级函数。每个定义标题的右侧是一个链接,上面写着“来源”。您可以单击此按钮转到您正在查看的模块的源代码的在线副本。
在预览时,您现在完全提出了一个不同的问题,而在再次预览时,实际上原始问题已从这篇文章中删除。
您的新问题尚不清楚,但此解决方案将在您的示例中产生输出。
> [fst ((('O',0),('I',0),('D',1)),"O->D")]
[(('O',0),('I',0),('D',1))]
顺便说一句,我认为您使用列表表示法而不是双引号来标识String
s,所以我在0->D
上面修复了它。所以你也可以试试这个。
> show (fst ((('O',0),('I',0),('D',1)),"O->D"))
"(('O',0),('I',0),('D',1))"
这是有效的,因为您只在已经具有实例的数据结构上定义了类型同义词(通过type
在声明中使用而不是)。data
Show