Я работаю в OCaml, окружающая среда, которую я использую, это Eclipe Mars. И когда я пытаюсь использовать List.iter [1.;3.;2.;-7.;4.;5.] ~f:(fun x -> update rsum x);;
, он дает ошибку, говоря, что Error: The function applied to this argument has type 'a list -> unit This argument cannot be applied with label ~f#
Дело в том, что это пример из книги, которая отлично работает для них, но я постоянно получаю эту ошибку, когда пытаюсь использовать ~f:
. Может кто-нибудь объяснить мне, почему это не работает? А также это помогло бы, если бы я знал, как сделать эту работу.label ~ f в OCaml
ответ
Тильда представляет функцию, известную как labelled argument. Стандартная библиотека OCaml имеет список модулей, где функции объявляются без помеченных аргументов и модулей ListLabels, которые их используют.
Моя гипотеза заключается в том, что вы читаете Real World OCaml, когда авторы используют другую библиотеку standard
под названием Core
. В этой библиотеке есть собственный модуль List, и эта библиотека многократно использует помеченные аргументы. Итак, вы, вероятно, забыли загрузить эту библиотеку в верхний уровень. Вероятно, вам нужно объяснить Eclispe, как загрузить нужную библиотеку или написать module List=ListLabels
в верхней части исходного файла.
Стандартный модуль List не поддерживает помеченные аргументы. Стандартный модуль ListLabels делает поддерживает помеченные аргументы.
# List.iter ~f: (fun x -> Printf.printf "%d\n" x) [1; 2; 3];;
Error: The function applied to this argument has type 'a list -> unit
This argument cannot be applied with label ~f
# ListLabels.iter ~f: (fun x -> Printf.printf "%d\n" x) [1; 2; 3];;
1
2
3
- : unit =()
Если вы учитесь из учебника или книги, вы должны быть уверены, что вы используете один и тот же модуль, как и они.
- 1. Сравнение F # и OCaml
- 2. F # изменяется на OCaml
- 3. эквивалент set_signal OCaml в F #
- 4. Преобразование OCaml в F #: преобразование расширения и расширения цитаты OCaml в F #
- 5. Преобразование OCaml в F #: Преобразование OCaml open_box и close_box в F #
- 6. Как ввести `let rec f g = g f` в OCaml?
- 7. Преобразование F # SEQ выражения в OCaml
- 8. Хорошие проекты для изучения OCaml и F #
- 9. Совместимость кода между OCaml и F #
- 10. Добавить текст в f: selectItems label в XHTML
- 11. Как написать код в F # для каких функторов в OCaml?
- 12. Использование переменной в шаблоне соответствия в OCaml или F #
- 13. переполнения стека в OCaml и F #, но не в Haskell
- 14. Как получить атрибут «label» HTML в f: selectItems?
- 15. Почему функции в Ocaml/F # не рекурсивные по умолчанию?
- 16. Преобразование OCaml в F #: Есть ли OCaml IDE с отладкой GUI, например Visual Studio
- 17. Преобразование OCaml в F #: может ли F # отобразить список значений непосредственно в список идентификаторов?
- 18. Импрессивный полиморфизм в F #
- 19. use Label и значение f: selecteItems with rich: combobox
- 20. новый набор инструментов: оригинальные модули F # или портированы из OCaml
- 21. Типы Widen в ocaml
- 22. Сопоставление моего кода с OCaml/F # на Scala - некоторые вопросы
- 23. Каковы эквивалентные побитовые операторы F # для «lsr» и «asr» OCaml?
- 24. Манипулирование списками в OCaml
- 25. О Нет в Ocaml
- 26. fold_tree в OCaml
- 27. Зависимые типы в OCaml
- 28. OCaml Summation
- 29. magento get custom label label
- 30. cytoscape source-label target-label
Единственное, что нужно отметить, это то, что Core не является другой стандартной библиотекой, это надпись поверх * стандартной библиотеки. – antron
Есть ли способ использовать Core с OcaIDE и Eclipse? – measuretheory