我得到的类型" 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)