-1
我想完成類似這樣的事情,但我無法完全理解語法。OCaml抽象類型函數
type _ s = Var : 'a -> 'a s
type _ t =
| AA :('a -> 'a s) -> 'c t
| AB : ('a -> 'b s) -> 'c t
let apply_to x = function
| AA g -> g x
| AB g -> g x
我想完成類似這樣的事情,但我無法完全理解語法。OCaml抽象類型函數
type _ s = Var : 'a -> 'a s
type _ t =
| AA :('a -> 'a s) -> 'c t
| AB : ('a -> 'b s) -> 'c t
let apply_to x = function
| AA g -> g x
| AB g -> g x
那麼,像'a -> 'a s
這樣的類型是有道理的。你可以看到參數是如何工作的。像('a -> 'a s) -> 'c t
這樣的類型對我來說沒有意義。我沒有看到'c
類型應該來自哪裏。 'a -> 'b s
也是如此。我看不到'b
應該來自哪裏。像這樣的類型通常與實際上不會返回的代碼(未定義代碼,引發異常的代碼等)關聯。
這是(非常)可能有GADT的一個微妙的,我不明白,但也許這將有助於至少一點。
所以我想我想要完成的是有一個函數類型在城市,可以應用。 –