我是新來ocaml的,我想弄清楚這個功能是如何工作的:Ocaml語法解釋請嗎?
let ccc c1 c2 c3 = fun (s1, s2, s3) n ->
let (t1, r1) = (c1 s1 2) in
if r1 = 0
then let (t2, r2) = (c2 s2 n) in ((t1, t2, s3), r2)
else let (t3, r3) = (c3 s3 n) in ((t1, s2, t3), r3) ;;
c1, c2, c3
都是「挑肥揀瘦」。我意識到這個函數的目的是讓3個選擇器進入,讓第一個選擇器選擇其他兩個選擇器中的哪一個使用,但我對語法感到困惑。有誰可以解釋一下嗎?謝謝!
非常感謝您的回答!我仍然對「s1,s2,s3」是什麼感到困惑。 'n'從哪裏來?最初,我們只將'c1 c2 c3'傳遞給'ccc'功能?謝謝! – pauliwago 2013-02-12 06:33:49
是'c2 s2 n'是帶有兩個參數's2'和'n'的對'c2'的調用。 'n'是內部函數的第二個參數(以'fun'開頭的函數)。 's1','s2'和's3'是由'ccc'返回的函數的第一個參數(一個3元組)的部分。 – 2013-02-12 06:33:52
那麼究竟傳遞給'ccc'的是什麼?除了'(s1,s2,s3),n'外,還有'c1 c2 c3'嗎? – pauliwago 2013-02-12 06:36:37