嵌套函數創建一個模塊,我有這樣的類型:爲了打印OCaml中
type lT = LV of name
| LC of name
| LA of lT * lT
| LAb of name * lT
我想實現一個名爲讓我們說s
的方式,它是通過以下方式會表現得功能:
let println x = printf "%s\n" (s x)
s (`App(`App(`App(`Bs, `K), `K), `K)) ==> "B* K K K」
出於這個原因,我已實現了以下模塊:
module type L2C =
sig
val c1 : lT -> ([> `T | `L | `J
| `A of 'b * 'b | `V of name | `C of name] as 'b)
val c2 : lT -> ([> `T | `L | `J | `C | `D
| `A of 'b * 'b | `V of name | `C of name] as 'b)
val c3 : lT -> ([> `T | `L | `J | `C | `D | `Sp | `Bp | `Bs | `Cp
| `A of 'b * 'b | `V of name | `C of name] as 'b)
val e : ([< `T | `L | `J | `C | `D | `Sp | `Bp | `Bs | `Cp
| `A of 'b * 'b | `V of name | `C of name] as 'b) ->
([ `T | `L | `J | `C | `D | `Sp | `Bp | `Bs | `Cp
| `A of 'b * 'b | `V of name | `C of name] as 'b)
end
但因爲我一個新的ocaml,我無法設法創建一個「s」函數來獲得我想要的輸出。
什麼可能是一種可能的方式來做到這一點?
我想@ RichouHunter的答案是你正在尋找的。只是想指出,有[print_endline](https://caml.inria.fr/pub/docs/manual-ocaml/libref/Pervasives.html#VALprint_endline) –