Ali*_* K. 3 haskell stream algebraic-data-types custom-data-type
我在大学开设了 Haskell 编程课程。我必须实现我自己的数据类型“ Stream”及其一些功能:
data Stream a = a :> Stream a
Run Code Online (Sandbox Code Playgroud)
我在实现功能“ streamToList”时遇到问题:
streamToList :: Stream a -> [a]
Run Code Online (Sandbox Code Playgroud)
它必须采用“”对象Stream并返回一个无限列表。但我不知道如何获取这个对象的元素。我怎样才能获取这个流的元素?
另外,我想问:这种数据类型的对象如何初始化?
您已将数据类型定义为
data Stream a = a :> Stream a
Run Code Online (Sandbox Code Playgroud)
这可以作为一个模式,一个如何使用它的模板。“使用”意味着创建和访问。换句话说,互动。
可以使用定义中左侧的模式来访问此类型的值,=
foo (a :> restOfAs) = a : foo restOfAs
Run Code Online (Sandbox Code Playgroud)
(这个函数的类型是什么?)
可以使用它作为定义右侧的代码模式来创建此类型的值,例如=
bar i = i :> bar (i+1)
Run Code Online (Sandbox Code Playgroud)
或者
baz [x] = x :> baz [x]
baz (x:xs) = x :> baz xs
baz [] = error "can't be empty"
Run Code Online (Sandbox Code Playgroud)
或者
quux x = xs where
xs = x :> xs
Run Code Online (Sandbox Code Playgroud)
(这些函数的类型是什么?)
| 归档时间: |
|
| 查看次数: |
373 次 |
| 最近记录: |