【发布时间】:2017-11-13 05:59:20
【问题描述】:
我正在阅读 Haskell 编程书和第 140 页的练习,作者指出:
A hypothetical function a->a->a has two possible implementations. Write both possible versions.
我假设a -> a -> a 将暗示一个带有两个参数(a and a) 的函数-(这对我来说没有意义,如果我将一个带有两个参数的函数声明为a,ghci 也正确地抱怨)并返回a
我想我错过了什么,是什么?
【问题讨论】:
-
你能发布完整的练习描述吗?
-
a可能表示一个类型;没有约束,它是一种你一无所知的类型,这将你限制在两个具有签名a -> a -> a的实现中。 (我不是 Haskell 程序员,但我想我知道问题的所在。) -
用外行的话来说:因为你需要知道关于参数类型的一些东西才能对它做任何事情,你不能对任何一个参数做任何事情。由于您无法对任一参数执行任何操作,因此您可以返回(未更改的)参数一或参数二。
-
@Ngm 函数的每个参数都需要有不同的名称。
a -> a -> a的类型签名只是说前两个参数具有相同的类型。这并不意味着它们具有相同的名称。 -
它们的名称不同,它们的类型相同。
a -> a -> a表示该函数接受两个相同类型的参数类型a并返回相同类型的值。
标签: haskell