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,它給了