[英]How to define the type profile for this function?
我必須定義此函數的類型配置文件:
twice f x = f (f x);
結果應該是以下內容,但我不知道為什么。
('a -> 'a) -> 'a -> 'a
(a -> a) -> a -> a
是正確的答案。 讓我們將其分成幾部分以找出原因。
f
和x
,因此簽名將分為三個部分-例如a- a -> c -> d
a = (a -> b)
a- a = (a -> b)
(請記住a
可以是任何類型,只要在簽名中僅出現一次)並且簽名看起來像(a -> b) -> c -> d
twice
的結果與第一個參數的結果相同-使得d = b
和簽名(a -> b) -> c -> b
f
以twice
第二個參數作為其參數-這使c = a
且簽名看起來像這樣: (a -> b) -> a -> b
twice
應用於其自己的輸出,這意味着a = b
這使得最終簽名(a -> a) -> a -> a
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.