2016-02-16 7 views
-1

Я заметил, что в OCaml нам разрешено использовать Карринг функцию какПочему кэрри функции в OCaml, но не в Java

let add = 
    fun y -> (fun x -> x + y) 
;; 

Но мой профессор сказал, что такой формат не допускается в Java. Например, с учетом метода foo1, можно вернуть foo1 при выполнении foo2. Это обоснованное объяснение? Если нет, что приводит к этой разнице между Java и OCaml?

int foo1(int a, ...) { 
    int foo2(...) { 
     //main body   
    } 
} 
+2

Поскольку Ocaml и Java - это разные языки? Почему вы думаете, что все, что разрешено на одном языке, должно быть действительным в другом? Но обратите внимание, что вы действительно можете сделать это на Java 8. – Tunaki

+0

@Tunaki Мне просто интересно, что происходит под сценой. –

ответ

1

Профессор должен выйти больше. См. Например, Does java support Currying? (ответ да).

+0

Это потому, что Ocaml - это в основном чистый язык, но Java нет? –

+0

Если вы перейдете по ссылке в моем ответе, вы увидите, что в Java (с версии 8) можно определить карриные функции. –

 Смежные вопросы

  • Нет связанных вопросов^_^