sml

У меня есть программа, которая возвращает int * int (Пример для иллюстрации): забавная программа (a, b) = (1,2) Я хочу сделать что-то вроде: Веселая программа (a, b) если a = 0, то (1,2) else val x, y = программа (a-1, b) возврат (x-1, y) В принципе, я хочу манипулировать ...

Я пытаюсь реализовать тестовую функцию для сравнения и отображения сообщения об ошибке, если они не равны: exception AssertionErrorException of string fun assert(testName, actual, expect) : bool = if actual = expect then true else raise (AssertionErrorException (testName ^ " failed. actual: " ^...

Я написал функцию ml и на выходе получаю out = Mary ("a", [Zary #, Zary #]) где Мэри и Зэри-конструкторы. Но, как вы можете видеть, есть некоторые "#" в выходных данных. если я это сделаю Вэл-Мэри("а",х) = выход; тогда он показывает x = [Zary ("b"), Zary ("c")]; что верно. Я хочу получить полный вывод вмест...

Я хочу определить свой собственный абстрактный тип 'a foo, который, как и 'a ref, является eqtype, Даже если 'a не является. например: lolcathost% poly Poly/ML 5.5.2 Release > signature FOO = # sig # eqtype 'a foo # val bar : real foo # val qux : real foo # end; signature FOO = sig val bar : real f...

Я пытаюсь создать функцию deriv для дифференцирования использование типа данных следующим образом: datatype Symex = RCOEFF of real | COEFF of string | VAR of string | POWER of Symex * int | NEG of Symex | PLUS of Symex * S...

Я хочу реализовать метод отображения пропозициональной формулы в SML. Решения, которые я нашел до сих пор, были такого типа: fun show (Atom a) = a | show (Neg p) = "(~ " ^ show p ^ ")" | show (Conj(p,q)) = "(" ^ show p ^ " & " ^ show q ^ ")" | show (Disj(p,q)) = "(" ^ show p ^ " | " ^ show q ^ ")"...

Может кто-нибудь объяснить, что означает это предупреждение? stdIn:18.35 Warning: calling polyEqual И почему у меня есть "А", а не " а " в следующем утверждении: val alreadyVisited = fn : ''a * ''a list -> bool Это функция: fun alreadyVisited(v, []) = false | alreadyVisited(v, x::xs) = if(x=v...

Я знаю, что могу написать y-комбинатор В SML так:: Сначала объявите новый тип данных, чтобы обойти несоответствие типов из-за цикличности. datatype 'a mu = Roll of ('a mu -> 'a) val unroll = fn Roll x => x Теперь вы можете легко определить y-комбинатор: val Y = fn f => (fn x => fn a => f (...

Вопрос прост. Как получить доступ к кортежу с помощью переменной индекса в SML? val index = 5; val tuple1 = (1,2,3,4,5,6,7,8,9,10); val correctValue = #index tuple1 ?? Я надеюсь, что кто-нибудь сможет помочь. Заранее спасибо!...

Я собираюсь преподавать курс с более низким разделением в дискретных структурах. Я выбрал учебник дискретные структуры, логика и вычислимость отчасти потому, что он содержит примеры и концепции, которые способствуют реализации с функциональным языком программирования. (Я также думаю, что это хороший учебник.)...