Описание тега ocaml
OCaml - это функциональный язык программирования со строгой статической типизацией, ориентированный на выразительность, правильность и эффективность.
1
ответ
Как передать значение рекурсивной функции вместо определения
У меня есть эта очень простая рекурсивная функция, чтобы добавить ветку в дерево из списка символов. type tree = Node of bool ref * (char * tree) list ref let rec create_branch lc = function [] -> Node(ref true, ref[]) | x :: l -> Node(ref fal…
21 фев '17 в 03:12
2
ответа
OCaml "с" охранником в сопоставлении с образцом
Я прочитал о шаблонных охранниках на code.google.com, где показан этот тип охранников: match x with | pat with g = y -> z | ... | pat with g = y -> z В OCaml 4.02 однако, похоже, не работает (Syntax error: pattern expected.), поэтому возникает…
09 дек '14 в 18:25
1
ответ
Генератор парсера времени исполнения Ocaml
Я пишу программу, которая в основном принимает грамматику в качестве входных данных в произвольном формате (и некоторых других правилах) и генерирует программу OCaml (средство проверки), которая после компиляции может проверить, принято ли выражение…
20 авг '18 в 16:32
2
ответа
Определить модуль и вызвать его функцию в одном файле
Я определил модуль в файле mod.ml следующее: module Area = struct ... let test : unit = Print.printf "haha" ... end;; Print.printf "hehe";; Area.test Кажется что без ;; после endЯ не могу скомпилировать код ocamlc, Но мне кажется странным иметь ;; в…
16 янв '12 в 16:56
1
ответ
Является ли F# компилятор однопроходным?
Я смотрю в Интернете и нахожу только одно упоминание о F# с использованием однопроходной компиляции в личном блоге, а не в официальных документах. Из моего опыта на данный момент кажется, что F# использует однопроходную компиляцию, так что вы можете…
18 апр '17 в 04:22
2
ответа
Умножение элементов списка Ocaml
let rec intmult = fun (aList ,al) -> if(List.tl aList == []) then ((List.hd aList) * al) else List.hd aList * al :: intmult (List.tl aList , al);; Почему это неправильно?
01 апр '13 в 06:36
3
ответа
OCaml: оставить поля в записях неопределенными?
У меня есть этот тип записи: type syllable = {onset: consonant list; nucleus: vowel list; coda: consonant list};; Что если я захочу создать слог, в котором определено только ядро? Могу ли я дать ему значение по умолчанию? По умолчанию это [] или что…
15 сен '09 в 03:03
1
ответ
Операции с числами с плавающей точкой в OCaml
Я пытаюсь написать функцию, которая принимает в качестве входных данных список чисел с плавающей запятой и возвращает список, в котором все отрицательные числа удаляются из входного списка, а затем все получающиеся положительные числа обнуляются. le…
02 май '18 в 01:40
1
ответ
OCaml пишет функцию тайм-аута с использованием Async
Я пытаюсь написать функцию, которая пытается оценить функцию, но останавливается после определенного времени ожидания. Я пытался использовать Deferred.any, который возвращает отложенное, которое выполняется, когда выполняется одно из базовых отложен…
25 окт '15 в 15:49
1
ответ
Определение типа функции OCaml
Я хочу написать функцию типа int -> 'a -> (int, int) slowa list Мне было интересно, мне обязательно нужно сначала определить тип slowa Если так, то так я определил свою "медлительность" type slowa = (_,_) |('a, 'b) of int * int ;; куда slowa и…
09 дек '13 в 15:00
1
ответ
Упростить функцию возврата модуля
Эта функция должна быть в состоянии упростить, удалив ненужные let module T = ..., Но как?! Я продолжаю получать синтаксические ошибки. Подсказки? let make_module dice_results : (module Tellstory.T) = let dice_calls = ref 0 in (* nr of times dice ha…
10 апр '15 в 21:14
2
ответа
Cygwin & OCaml: батареи OPAM +
Я широко использую Cygwin в среде Windows 8 (я не хочу идти вперед и загружать / загружать Linux прямо на машине). Я использую плагин OCamlIDE для Eclipse и практически не испытывал проблем при использовании этой настройки рабочего процесса. Тем не …
01 апр '13 в 21:03
3
ответа
Компиляция с использованием сторонних библиотек
Я использую Getopt для разбора аргументов командной строки в commands.ml. Итак, первая строка command.ml выглядит так: open Getopt Я не могу понять, как я скомпилировал command.ml с этим модулем. Я пробовал так много вещей, и я всегда получаю следую…
19 июн '15 в 16:45
1
ответ
Предложить пользователю создать список строк
Я хотел бы создать список строк, предложив пользователю для ввода. Моя конечная цель - уметь анализировать список строк по простой хеш-таблице с помощью простой процедуры. `let list_find tbl ls = List.iter (fun x -> let mbr = if Hashtbl.mem tbl x…
23 окт '14 в 05:14
1
ответ
Вызов функции в OCaml на основе строковой переменной, хранящей имя функции
Есть ли в OCaml такой механизм, чтобы я мог динамически вызывать функцию на основе переменной, хранящей имя функции, как то, что я могу делать в других языках сценариев? Например, я написал функцию foo(). И я храню строковые константы "foo" где-то в…
18 мар '14 в 18:36
2
ответа
Почему этот кортеж имеет 2 элемента?
пусть р = пусть х = 1 в х + 1, пусть у = 2 в у + 1, 4 поскольку comma , имеют самый низкий приоритет, я бы изображение p имеет 3 элементы: (2, 3, 4), Но по факту, p имеет только 2 элементы: (2, (3, 4)) Зачем? Почему последний , принадлежит let y выр…
16 янв '13 в 16:23
1
ответ
В OCaml я определил в файле AST, что stmt может быть stmt или stmt List, но при использовании в функции он сообщает об ошибке
Я определил в файле AST, что stmt=|stmt|stmt List. Тогда у меня есть функция с параметром типа stmt, я не могу использовать список stmt? Может кто-нибудь сказать мне, как заставить это работать? Ошибка при компиляции: Error: This expression has type…
11 май '15 в 18:39
1
ответ
Рекурсия в Ocaml - вывод неожиданного результата
let n = read_int();; let ftp = Hashtbl.create 1;; let rec perrin n = match n with 0 -> 3 |1 -> 0 |2 -> 2 |_ -> if Hashtbl.mem ftp n then Hashtbl.find ftp n else begin Hashtbl.add ftp n (perrin (n-2) + perrin (n-3)); Hashtbl.find ftp n en…
26 окт '16 в 20:52
4
ответа
Как вернуть индекс цикла for в OCaml?
let find_free_next heap start = for i = start to ((Array.length heap)-1) do match heap.(i) with Hdr (Free (h), g) -> i done Как я могу вернуть индекс цикла в виде целого числа после того, как совпадение было найдено?
27 фев '12 в 01:00
2
ответа
(OCaml) Странный синтаксис, используемый в queue.ml - оператор `<-`
Просматривая библиотеку Caml Light для примеров программирования, я наткнулся на следующий код, взятый из Caml Light queue.ml файл: type 'a queue_cell = Nil | Cons of 'a * 'a queue_cell ref ;; type 'a t = { mutable head: 'a queue_cell; mutable tail:…
20 янв '11 в 16:56