ml

    1热度

    1回答

    我正在学习OCaml的,现在,我做到这一点后, type aexp = | Const of int | Var of string | Power of string * int | Times of aexp list | Sum of aexp list let rec diff : aexp * string -> aexp =fun (aexp,x) -> match a

    0热度

    1回答

    我想写一个函数,查找给定的数字n是否是一个完美的正方形。这里是我的尝试: local fun perfect_square_iter x z = let val sqr = z * z in case (x,z) of (sqr,_) => true | (_, 0) => false | _ => perfect_square_iter x

    -1热度

    2回答

    与数据类型列表实现multiFilter 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::multi

    0热度

    1回答

    的总和我尝试用下面的协议定义功能: [(1,2), (6,5), (9,10)] -> [3, 11, 19] 这是我现在有: fun sum_pairs (l : (int * int) list) = if null l then [] else (#1 hd(l)) + (#2 hd(l))::sum_pairs(tl(l)) 根据类型检查我有一些type

    5热度

    1回答

    我正在阅读Okasaki's Purely Functional Data Structures并正在尝试做一些练习。其中之一是证明二项式堆merge需要O(log n)时间,其中n是堆中的节点数。 functor BinomialHeap (Element:ORDERED):HEAP= struct structure Elem=Element datatype Tree

    2热度

    1回答

    我想在标准ML中使用抽象数据类型。例如,可以写一个签名队列,并且通过定义两种结构作为队列两个队列的实现: signature Queue = ... structure AQueue :> Queue = ... structure BQueue :> Queue = ... 现在,我想编写通用功能/值队列,它并不重要队列我正在使用(AQueue或BQueue)。例如,我想编写如下: va

    2热度

    1回答

    我最好使用String.Set.choose some_set挑选一组字符串。 这个方法返回StringOption,但我想使用另一种方法与第二的返回值,所以我想给StringOption浇铸成字符串。 我根据OCaml的文档(link here),其Option.default应该这样做,但因为某种原因它丢失(虽然Option用的方法,其余全部存在)知道。 有没有办法来解决这个还是让我的下一个方

    2热度

    1回答

    我正在通过ML阅读工作程序员,并且由于作者区分迭代和递归而有点困惑。我的理解是,“递归”只是指一个自称的函数。任何不递归的函数都是迭代的(迭代算法通常涉及某种循环)。 但是,在本书中,作者会说“幸运的是,明显的递归解决方案是迭代的”。因此,我对这些术语的理解与作者的使用方式明显不同。 有人可以澄清我误解这些条款的地方吗? 感谢, bclayman

    1热度

    1回答

    我只是碰到下面的函数进来ML的工作程序员: fun null [] = true | null (_::_) = false 1)不能同时使用通配符是空的名单?如果不是,ML如何防止这种情况发生? 2)可能的功能被缩短为: fun null [] = true | false 为什么/为什么不呢? 感谢您的帮助, bclayman

    0热度

    1回答

    我想写一个函数来从另一个列表中删除列表。 ''a list -> ''a list -> ''a list 这是我到目前为止有: fun delete _ [] = [] | delete (h1::t1) (h2::t2) = if h1=h2 then t2 else h2::delete (h1::t1) t2; 我使用MoscowML,它给了