簡體   English   中英

OCaml類型和類型推斷

[英]OCaml Type and Type Inference

我在確定OCaml類型時遇到了一些麻煩。 為什么以下表達式的類型為:

let f x y z = z (y::x)

'a list->'a->('a list->'b)->'b

z (y::x)是什么意思? 我知道y::x意味着將元素y附加到列表x ,但是z做什么?

謝謝!

首先,請注意y::x 元素y 添加到列表x ,而不是追加

f類型的四個部分可以解釋如下:

  • 函數f的第一個參數是x ,因此f類型的第一部分是'a list ,這與在f的定義中使用x作為列表一致。
  • f類型的第二部分是'a ,這與將元素y前置到列表x ,因為如果x'a list ,則y必須是'a
  • f的第三個參數是z ,它必須是一個函數,它將'a list作為它的第一個參數,給出它在f的定義中的用法。 因此f類型的第三部分是('a list -> 'b) ,其中'bz的返回類型。
  • 最后, f的返回類型與z的返回類型相同,因此f類型的最后部分是'b'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM