0
我正在寫一個函數,它接受一個多項式數據類型並將其編譯到它所表示的函數中。接受兩個函數並返回一個添加結果的函數
例如(恆4)僅僅是恆定4,
(添加保利)可以是添加(恆1)(恆定4)
在該函數應該返回功能(\ n> 1 + 4)
如果是Add(常量1)變量,函數應返回(\ n-> 1 + n)。
的問題是,在頂層,我有
makePoly :: Poly -> (Int->Int)
makePoly (PConst n) = \n->n
makePoly (Add p1 p2) = makePoly p1 ?? makePoly p2 <- what should I do here?
如何編譯這些2返回功能(可行回來爲(\ N-> N)(\ N->ñ )如果他們都是常量)加入?我應該添加一個輔助函數,它接受兩個函數並返回其輸出的總和?
編輯:如果是這樣的話,我該怎麼做呢?
add :: (Int->Int)->(Int->Int)->(Int->Int)
add f g = ?
再次編輯:答案的人搜索,通過@ user5402給出:
makePoly (Add p1 p2) = (\n -> (makePoly p1) n + (makePoly p2) n)
謝謝!所以也許就像makePoly(PConst x)= \ n-> x? – Aserian
另外,作爲一邊......你知道我怎麼能得到GHCI打印出於測試目的而返回的函數的表示? – Aserian
是的,你對'PConst'情況的修正。由於'n'從未被使用過,所以你也可以寫:'... = \\ _ - > x' – ErikR