我得到的类型" Signal"只是一个双打列表,我想使用正常的列表操作,如本机上[Double].这应该是可能的,但它不会编译.您如何向编译器语法正确描述这一点.
这是测试代码:
data Signal = Signal [Double] deriving(Show, Eq)
test :: Signal
test = Signal [1.0,2.0,3.0]
take2 :: Signal -> Signal
take2 s = take 2 s
Run Code Online (Sandbox Code Playgroud)
预期: take2 test = [1.0,2.0]
实际:
"Couldn't match expected type ‘Signal’ with actual type ‘[a0]’
In the expression: take 2 s
In an equation for ‘take2’: take2 s = take 2 s"
Run Code Online (Sandbox Code Playgroud)
注意函数定义如下:
take2 :: Signal -> Signal
take2 s = take 2 s
Run Code Online (Sandbox Code Playgroud)
s是不是一个清单,这是一个Signal和take 2 s是一个列表,而不是一个Signal,你需要的东西是从获取列表Signal,并构建一个Signal从列表如下:
take2 (Signal s) = Signal $ take 2 s
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
56 次 |
| 最近记录: |