OCaml의 옵션 유형은 아무 것도 반환하지 않는 함수가있는 경우에 유용합니다. 그러나 이것을 여러 곳에서 사용할 때, 케이스와 None
케이스를 항상 match ... with
으로 처리하는 것이 번거로울 수 있습니다.OCaml에서 옵션 유형을 해체하는 다른 방법이 있습니까?
let env2 = List.map (fun ((it,ie),v,t) ->
match t with
| Some t -> (v,t)
| None ->
begin
match it with
| Some it -> (v,it)
| None -> failwith "Cannot infer local vars"
end) ls_res in
은 간결한 방식으로 옵션 유형을 해체하는 다른 방법은 예를 들어
,이 있습니까?
+1 나는 컴파일러가이 구조를 잘 사용한다고 들었지만 언젠가 나는 어셈블리를 보았다. (나는 람다 코드를 살펴볼 수 있었지만 이미 하나의 어셈블리 언어를 알고 있었기 때문에 실제로 나에게 덜 효과적이었다.) 나는 실망했다. 인상적인 최적화는 잊어 버린 명백한 경우처럼 보이게됩니다. 현재로서는 'caml_alloc2'에 대한 두 번의 호출이 없어야합니다. (하지만) http://pastebin.com/EfFsxhCQ –
간단합니다. –
감사합니다. 이것은 가장 간결하고 읽기 쉬운 대답입니다. –