multimethod

    3熱度

    3回答

    讓我們來看看從文檔的例子: square = fn(x) -> x * x end list = [1, 2, 3, 4] Enum.map(list, square) 爲什麼它需要明確寫入Enum.map?爲什麼它不使用簡潔的符號map [1, 2, 3, 4], square? 該藥劑有多個調度&協議,但它似乎對我來說有點奇怪。 如果考慮OOP或Multimethods/Multipl

    2熱度

    1回答

    在它規定的clojure.org documentation on multimethods: Clojure multimethods ... can do validation of arguments and route to error-handling methods etc. 不過,我不認爲使用多方法用於此目的的人的例子很多。在需要實現單個方法定義的情況下,使用multimethods

    2熱度

    1回答

    受this啓發優秀的文章我想在Clojure中使用文章中使用的算法實現一個簡單的表達式簡化器。這篇文章給出了F#,Scala,Haskell,C++和Julia中的示例實現,它們都顯得相當優雅。 我已經想出了兩個不同的實現(見下文),但我有一個嘮叨的感覺,他們都比慣用。 我的問題是:一個慣用的Clojure實現是什麼樣的? 先執行,主要依據協議: (defprotocol Expr (s

    1熱度

    1回答

    是否有語言在同一時間慣用兩種概念?什麼時候有必要?每種方法的優缺點是什麼? 背景的問題: 我是新手(有一些Python知識)試圖建立的多方法和接口是如何意味着更好的畫面中使用(一般)。 我假定它們並不意味着被混合:在接口方面任一個聲明可用邏輯(和實現它作爲類的方法)或一個做它在多方法的方面。它是否正確? 是否有意義說話OOP概念的頻譜的,其中:與幼稚子類 一個開始(數據和邏輯(方法)和邏輯實現(方

    4熱度

    2回答

    http://www.haskell.org/pipermail/haskell-cafe/2007-August/030096.html類型類方法collide被定義爲將2元組作爲其單個參數,而不是兩個「正常」參數(我認爲我理解部分應用等)。 {-# OPTIONS_GHC -fglasgow-exts -fallow-undecidable-instances -fal

    3熱度

    2回答

    方案:我想使用多方法在多個文件中調度和傳播功能。其中一個文件只包含multimethods,爲了使它們可用,我必須手動加載文件。有沒有辦法自動加載文件,而不是顯式加載它? 這裏有我在做什麼一個簡單的例子: ; app/core.clj (ns app.core (:use [app.fruit.core :only [make-fruit]]) (println (:name (ma

    3熱度

    1回答

    快速clojure問題,我認爲這主要是語法相關的。我如何調度基礎上的論點特定類型簽名一個多重方法,例如: (defn foo ([String a String b] (println a b)) ([Long a Long b] (println (+ a b)) ([String a Long b] (println a (str b)))) 我想將其擴展到任

    20熱度

    2回答

    更廣泛地說,這個問題是關於expression problem的各種方法。這個想法是你的程序是一個數據類型和對它的操作的組合。我們希望能夠在不重新編譯舊類的情況下添加新的案例。 現在哈斯克爾有expression problem與TypeClass真的很棒的解決方案。特別是 - 我們可以做: class Eq a where (==) :: a -> a -> Bool (/=

    2熱度

    1回答

    在我正在進行的Clojure練習中,我有幾種多方法,所有這些都只是使用identity作爲調度功能。例如: (defmulti amount identity) (defmulti bottles identity) (defmulti pronoun identity) (defmulti action identity) (defmulti pred identity) 因爲他們都

    0熱度

    1回答

    我使用冒泡排序方法按順序對輸入數字進行排序(從最小到最大),並在自己的方法中使用。然後,在下一個方法中(我需要按順序編號),似乎忽略了我在前面的方法中對數字進行了排序。我是否沒有正確地調用方法或什麼? 謝謝! import java.util.Scanner; public class hw6 { public static int getOrder(int n1, int n2, int n