2014-10-20 3 views

답변

8

:

let sum f = f 0 
let arg x acc g = g (acc + x) 
let z a = a 

그리고을 (

동일한 유형의 가변 인자를 처리하는 가장 분명한 방법은 목록을 전달하는 것입니다 ab) 사용법 :

# sum z;; 
- : int = 0 
# sum (arg 1) z;; 
- : int = 1 
# sum (arg 1) (arg 2) (arg 3) z;; 
- : int = 6 

깔끔한, 응? 그러나 이것을 사용하지 마십시오. 해킹입니다.

설명은 this page (SML의 관점에서 생각해 보면 동일합니다)을 참조하십시오.

+0

int리스트를 전달하는 것이 더 좋은 방법이기 때문에 이것을 사용하지 않을 것입니다. 그러나 더 높은 수준의 기능과 연속성 전달 스타일을 사용하는 것이 매우 좋습니다. –

9

OCaml의이 강력한 형식 및 기타 (지정되지 않은) 언어에서 사용되는 많은 기술을 적용 할 수 있습니다합니다. 제 의견으로는 (프로그래밍 50 년 후에) 이것은 아주 좋은 문제이지 문제는 아닙니다. 반드시 입력 해커의 비트와 함께

# let sum l = List.fold_left (+) 0 l;; 
val sum : int list -> int = <fun> 
# sum [1;2;3;4;5;6];; 
- : int = 21 
관련 문제