首页 > 解决方案 > Haskell 中的 type 关键字是什么

问题描述

偶然发现了 Haskell 中的 type 关键字:

type Item = String

但不确定它的作用、如何使用它或它与data. 在线谷歌搜索没有任何帮助。

我尝试在这样的代码中实现它:

    import System.IO

main = do  
        putStrLn "Hello, what's your name?"  
        type Item = String
        let test :: Item
        test = "chris"
        putStrLn test  

但我有一个错误

输入“类型”解析错误</p>

请通俗地说什么是type数据,如何使用它,它与数据有何不同?

标签: haskell

解决方案


它是一个类型别名。这意味着你可以Item在你的代码中使用你可以使用的地方String

例如,当您想要为更复杂的类型命名时,通常会使用类型别名。例如:

import Data.Map(Map)

type Dictionary = Map String String

因此,您可以在这里使用Dictionary而不是每次写入Map String String

此外,如果您想指定您正在使用Items,则通常会使用别名,然后在类型签名和文档中使用别名,这通常比编写String.

如果您还不知道将用于特定对象的类型,也可以使用它。通过使用类型别名,您可以使用Item,并且稍后如果您更改您的定义类型Item或使其成为另一种类型的别名。这使得更改类型更加方便。

我尝试在这样的代码中实现它:
import System.IO

main = do  
    putStrLn "Hello, what's your name?"  
    type Item = String
    let test :: Item
    test = "chris"
    putStrLn test

类型别名是在顶层定义的,而不是在do块中,这会使类型定义在本地范围内。虽然,就像@moonGoose 所说,有一些建议可以使类型定义更具本地范围,但目前情况并非如此。

您可以定义类型别名,如:

import System.IO

type Item = String

main = do  
    putStrLn "Hello, what's your name?"  
    let test :: Item
        test = "chris"
    putStrLn test

推荐阅读