Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 类型同义词如何处理多功能?_Haskell_Types - Fatal编程技术网

Haskell 类型同义词如何处理多功能?

Haskell 类型同义词如何处理多功能?,haskell,types,Haskell,Types,我看到您可以为多次投影的函数创建类型同义词,但我不太明白应该如何使用它 这里是我刚刚编的一个示例,我想它会显示这样一个用例,但是我无法通过party定义函数throwParty。我该如何使用这样一个类型同义词呢 我的例子 type DamagedFurniture = String type Person = String type Friend = Person type Acquaintances = Person -> Friend -&

我看到您可以为多次投影的函数创建类型同义词,但我不太明白应该如何使用它

这里是我刚刚编的一个示例,我想它会显示这样一个用例,但是我无法通过party定义函数
throwParty
。我该如何使用这样一个类型同义词呢

我的例子

type DamagedFurniture = String
type Person           = String
type Friend           = Person
type Acquaintances    = Person -> Friend -> [Person]

throwParty :: Person -> Acquaintances -> DamagedFurniture
那相当于

throwParty :: Person -> (Person -> Friend -> [Person]) -> DamagedFurniture
而不是

throwParty :: Person -> Person -> Friend -> [Person] -> DamagedFurniture
你可以做的是:

type AcquaintancesTo a = Person -> Friend -> [Person] -> a

throwParty :: Person -> AcquaintancesTo DamagedFurniture
那相当于

throwParty :: Person -> (Person -> Friend -> [Person]) -> DamagedFurniture
而不是

throwParty :: Person -> Person -> Friend -> [Person] -> DamagedFurniture
你可以做的是:

type AcquaintancesTo a = Person -> Friend -> [Person] -> a

throwParty :: Person -> AcquaintancesTo DamagedFurniture

我懂了。。。但是如果我不更改类型同义词,
throwParty
的定义会是什么样子呢?我很难理解如何表示熟人函数。类似这样的:
throwParty-host(主机的朋友[人])=“破门”
不起作用。我不知道我是怎么想的,但现在已经清楚了。您只需传递可以在内部使用的函数<代码>throwParty主机calcPartyGuests=。。。。calcPartyGuests主持someFriend…@TomTom:看起来好像你也没有更改定义:
通过Party host的friend people=…
。如果您想将
熟人
表示为一个实体,您可能应该将其作为一个数据类型:
数据熟人=熟人-人-朋友[人]
然后
通过party host(熟人-主人-朋友-人)=…
我明白了。。。但是如果我不更改类型同义词,
throwParty
的定义会是什么样子呢?我很难理解如何表示熟人函数。类似这样的:
throwParty-host(主机的朋友[人])=“破门”
不起作用。我不知道我是怎么想的,但现在已经清楚了。您只需传递可以在内部使用的函数<代码>throwParty主机calcPartyGuests=。。。。calcPartyGuests主持someFriend…@TomTom:看起来好像你也没有更改定义:
通过Party host的friend people=…
。如果您想将
熟人
表示为一个实体,您可能应该将其作为一个数据类型:
数据熟人=熟人-人-朋友[人]
然后
通过party-host(熟人-主人的朋友-人)=……