Я получил тип "Signal
", который является только списком значений типа double, и я хочу использовать обычные операции над списками, как на нативном [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
Ожидаемое: 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"