ML - это семейство языков функционального программирования, включая SML, OCaml и F#. ИСПОЛЬЗУЙТЕ тег [машинное обучение] для машинного обучения.
1 ответ

Мл тип анализа функции сгиба

Может кто-нибудь объяснить мне, как определить тип следующей функции, сложите, как определено ниже? fun fold func [] base = base | fold func (x::xs) base = fold func xs (func x base); Мой ответ - "c ->" a list -> "b ->" b, но я вижу, что после подкл…
06 ноя '12 в 13:27
2 ответа

Как я могу реализовать multiFilter со списком типов данных в ML

datatype 'a Multilist = Node of 'a list | List of 'a Multilist list; fun isGreaterThen x y = y > x; fun multiFilter f (List([])) = [] | multiFilter f (List(m::multil)) = let fun flattenAuxiliray(Node(value)) = if (f value = true) then (value) els…
29 авг '15 в 19:52
2 ответа

Компиляторы семейства ML делают какую-либо сложную оптимизацию для хвостовых вызовов?

Я (полагаю) следующее определение функции является хвостово-рекурсивным: fun is_sorted [] = true | is_sorted [x] = true | is_sorted (x::(y::xs)) = if x > y then false else is_sorted (y::xs) Тривиально, это эквивалентно следующему объявлению fun i…
17 июл '14 в 13:38
1 ответ

Функция возвращает строку, когда ожидается bool

Что не так с этим фрагментом кода? fun expd s:string = if size(s) > 0 then true else false; Ошибка, которую я получаю: - fun exnd s:string = if size(s) > a then true else false; stdIn:657.1-837.8 Error: unbound variable or constructor: a Error…
28 ноя '16 в 13:47
1 ответ

SML Общий тип для разных структур

Я реализую наборы в стандарте ML. В настоящее время это выглядит так: signature SET = sig type t type 'a set ... val map : ('a -> t) -> 'a set -> t set end functor ListSetFn (EQ : sig type t val equal : t * t -> bool end) :> SET where…
04 июл '17 в 14:23
1 ответ

Стандартные статические ошибки ML

Я должен написать функцию, которая вычисляет этот тип данных: datatype Expr = X | Y | Avg of Expr * Expr | Mul of Expr * Expr; и я не могу найти ошибку в следующей функции; val rec compute => fn X => (fn x => fn y => x) | Y => (fn x =…
27 июл '15 в 16:10
3 ответа

Удалить элементы из списка в мл

Я пытаюсь написать функцию, которая создает новый список, содержащий данный список без элемента x. Московский ОД говорит, что некоторые случаи не используются в этом матче. fun delete (x,list) = delete(x,[]) |delete(x,(first::rest)) = if first = x t…
17 авг '13 в 17:49
1 ответ

Вернуть большее значение кортежа

Я пытаюсь найти режим списка, и вернуть кортеж режима и количество раз, когда это происходит в списке. У меня это до такой степени, что я могу вернуть список каждого числа и количество раз, которое это происходит после этого, но это также дает мне в…
27 окт '13 в 18:18
1 ответ

Есть ли несколько способов написания Thunk в SML?

Основной нубский вопрос: У меня есть данные, которые мне нужно оценить лениво, самый распространенный способ сделать это, сделав thunks; как я привык это делать, это так: fun someFunc () = let fun myThunk () = 2 + 2 in (* body *) end Но каждое руков…
17 сен '13 в 21:06
1 ответ

Генерация бесконечного списка последовательности Фибоначчи в ML

Я должен создать бесконечный список, содержащий последовательность Фибоначчи. Я новичок в ML, поэтому я хочу проверить, правильно ли это. -datatype 'a infist=NIL = | CONS of 'a * (unit -> 'a inflist); - fun fib a b = CONS (a , fn()=> fib b (a+…
02 ноя '13 в 23:34
3 ответа

Написание переводчика на OCaml

Я изучаю курс в моем университете, в котором меня просят написать переводчик на языке OCaml, начиная с его операционной семантики. К сожалению, они не дали нам много ресурсов, из которых мы можем узнать об этом, кроме как из слайдов урока. Может кто…
06 дек '15 в 17:33
2 ответа

Ограничения вывода типа в ML

Я читал анекдоты людей, которые использовали ML в промышленности, говоря, что довольно часто встречались ограничения на вывод типов и они должны использовать явные аннотации типов в своих программах. Может ли кто-нибудь привести явные примеры того, …
26 окт '12 в 04:53
1 ответ

Широкие карты и манипуляции с фильтрами в списках - ML

Я пытался создать функцию ML (карри), которая берет список кортежей из формы: (предикат, функция) и список и возвращает операцию функции каждого элемента, который вернул true, то есть для каждого условия есть определенный функцию для выполнения, нап…
07 май '14 в 14:18
1 ответ

Как исследовать предметы в "наборе" без оператора "против"

Это один из примеров кода, который, я думаю, отлично работает в заданном типе данных, реализованном в виде списка: fun newSet() = nilset; fun isMember (k, x::xs) = if k = x then true else isMember (k, xs) | isMember (k, nilset) = false; Проблема в т…
05 ноя '12 в 22:15
2 ответа

Есть ли у SML (Poly) CL-подобный REPL?

Вот цитата из Рона Гаррета "Лиспинг в JPL": "Отладка программы, работающей на оборудовании стоимостью 100 миллионов долларов, находящемся на расстоянии 100 миллионов миль, представляет собой интересный опыт. Наличие цикла чтения-проверки-печати на к…
04 мар '12 в 14:45
1 ответ

Проверьте, действительно ли вход является числом Фибоначчи

fun isfib(a) = findfib(a,1,1) and findfib(b,x,y) = val z = x + y if b <= 1 then true else if z > b then false else if z = b then true else fib(b,y,z) Я помещаю ввод в программу и рекурсивно пытаюсь выяснить, является ли этот ввод числом Фиби и…
14 фев '13 в 00:40
1 ответ

Использование функции foldr в ML для объединения списков

Если у меня есть набор списков, таких как [[1,2,4], [3], [0,9,8]...], и предполагается, что подпрограмма 'слияние' предопределена, как мне объединить эти списки в один список с использованием функции Foldr? Синтаксис для foldr: foldr f init [...]; Я…
13 ноя '14 в 14:32
4 ответа

Объяснить вывод типа ML программисту на C++

Как ML выполняет вывод типа в следующем определении функции: let add a b = a + b Это как шаблоны C++, где проверка типов не выполняется до момента создания экземпляра шаблона, после которого, если тип поддерживает необходимые операции, функция работ…
1 ответ

Монады и ценностное ограничение в ОД

Ограничение значений в ML предотвращает обобщение типов в тех случаях, когда это может нарушить безопасность типов. Основная проблема, кажется, возникает из-за сочетания последовательных мутаций и полиморфных типов, как, например, в следующем коде O…
22 окт '16 в 13:32
1 ответ

Стандартный мл добавить элементы в пользовательском типе данных

Я хочу создать функцию для нового типа данных в Standard ML, тип данных называется intnest, определяемый следующим образом: datatype intnest = INT of int | LIST of intnest list; и я хочу сделать функцию, которая добавляет все целые числа в intlist, …
28 мар '12 в 08:51