以下等式是用Miranda語法編寫的,但由於Miranda和Haskell之間的相似性,我期望Haskell程序員應該理解它!確定函數式編程中函數的類型
如果定義了以下功能:
rc v g i = g (v:i)
rn x = x
rh g = hd (g [])
f [] y = y
f (x:xs) y = f xs (rc x y)
g [] y = y
g (x:xs) y = g xs (x:y)
你如何制定出的功能類型?我想我明白如何解決f,g和rn問題,但我對部分應用程序部分感到困惑。
RN將是* - > *(或任何東西 - >什麼,我認爲這是一個 - 在Haskell>一個)
對於f和g,是函數類型都[*] - > * - > *?
我不確定如何處理尋找rc和rh的類型。在rc中,g被部分應用於變量i - 所以我猜測這限制了我的類型[*]。 rc和g在rc的定義中應用了什麼順序? g是否應用於i,然後將得到的函數用作rc的參數?還是rc需要3個獨立的v,g和i參數?我真的很困惑..任何幫助將不勝感激!多謝你們。
對不起忘了補充一點,HD是列表的標準頭功能,並定義爲:
hd :: [*] -> *
hd (a:x) = a
hd [] = error "hd []"
這是功課嗎? – 2012-03-30 13:07:53
不,我現在正在準備考試,這是一個米蘭達考試的老考試問題。 – user1058210 2012-03-30 13:11:42
「hd」功能的類型是什麼? – 2012-03-30 13:12:57