这种符号在haskell中意味着什么?

时间:2018-03-04 18:26:08

标签: haskell

function :: Type1 Type2

Type1Type2是否返回值(元组)?

data Loc = Loc String Int Int 

data Parser b a = P (b -> [(a, b)])

parse :: Parser b a -> b -> [(a, b)]
parse (P p) inp = p inp

type Lexer a = Parser (Loc, String) a

item :: Lexer Char
item = ????

如何从项目功能返回LexerChar? 能不能给我一些简单的例子。

1 个答案:

答案 0 :(得分:3)

不,它是不是元组,类型也可以参数化。在像Java这样的命令式语言中,这个概念通常被称为泛型类型(尽管这两个概念没有一对一的映射)。

例如,在Java中,您有以下类:

class LinkedList<E> {

    // ...

}

现在我们可以看到LinkedList作为一个函数,它接受一个参数E作为输入,然后返回一个真实的类型(例如LinkedList<String>是一个存储{String的链表。 1}}为s)。所以我们可以将这种抽象类型看作一个函数。

这也是Haskell中使用的概念。例如,我们有Maybe类型:

data Maybe a = Nothing | Just a

请注意a。这是我们需要填写的类型参数。函数无法返回Maybe,它只能返回填充Maybe a的{​​{1}}。例如{{1} }:a类型为Maybe CharMaybe类型为NothingJust x