Ответ 1
Да, большинство пользователей OCaml будет считаться идиотским. Поскольку идиоматика не является точной нормой, невозможно измерить, насколько идиоматично.
Предостережение заключается в том, что вам придется изменить часть кода, чтобы использовать функции на одном языке, которые не находятся в другом. В частности, если функтор является идиоматическим способом сделать это в OCaml, тогда вам придется преобразовать код F # в Functor. Или, если F # широко использует библиотечный код .Net, вам придется воссоздать эти функции в OCaml или найти эквивалент.
Я перевел свою долю в ML и OCaml на F #, и, как вы заметили, и то, что я называю средой и этикой, - это действительно большие различия, например. функторы, camlp4, единицы измерения, Visual Studio, перемещение во времени, NUnit, WPF и т.д.
Помните, что F # запускался как OCaml при переносе, поэтому по большей части все еще много общего.
Если вы хотите, чтобы какой-то значительный код кода, сделанный в OCaml и F #, переводил почти строку для строки, взгляните на код "Справочник по практической логике и автоматическому обоснованию" Джона Харрисона.
Тогда вы можете судить сами.
Мне нужно отметить, что код "Справочник по практической логике и автоматизированному рассуждению" не использует классы, записи, события и т.п. Это почти чисто функции.
Еще один способ сравнить любые два языка в целом по idomaticness (ОК, поэтому я придумал это слово) - использовать Rosetta Code. Rosetta Code содержит решения задачи программирования, написанные на многих языках. Поэтому найдите задачу программирования, например. создать класс, а затем посмотреть OCaml и F #.
Не все задачи выполняются на всех языках, но любой может внести вклад или даже предложить новую задачу.