理解Haskell中的类型同义词和参数化类型同义词

Ant*_*ván 1 haskell types

我有以下类型:

type Name = String

type Assignation a = Name -> a
Run Code Online (Sandbox Code Playgroud)

以及以下函数声明:

actAsig :: Assignation a -> Name -> a -> Assignation a
Run Code Online (Sandbox Code Playgroud)

此函数应返回一个new Assignation,它返回所提供的新指定值Name以及先前为其他Names 指定的值.

Cac*_*tus 7

actAsig如果我理解的话,规范是给定的

assignation1 :: Assignation a
newName :: Name
newValue :: a

assignation2 = actAsig assignation1 newName newValue
Run Code Online (Sandbox Code Playgroud)

要求assignation2

assignation2 name = if name == newName then newValue else assignation1 name
Run Code Online (Sandbox Code Playgroud)

所以,你可以这样写:

actAsig :: Assignation a -> Name -> a -> Assignation a
actAsig assignation1 newName newValue name = 
    if name == newName then newValue else assignation1 name
Run Code Online (Sandbox Code Playgroud)