higher-order-functions

    1熱度

    1回答

    目前代碼 我有兩個功能 f1::Int->Int->Int f1 a b | a==1 && b==1 = 1 | otherwise = 0 由另一個函數使用該功能的[Int] f2::[Int]->[Int]->[Int] f2 a b = map f1 a b 錯誤 Type error in application *** Expression : map f1

    -1熱度

    1回答

    測試這是目前返回炭值的高階函數,我必須返回一個String作爲test::Int->(Int-> Char)->String 我改變起作用體作爲 test::Int->(Int-> Char)->String test n f = map f(n) 錯誤 Type error in application *** Expression : map f n *** Term : n

    3熱度

    3回答

    是不是所有類型的子類型? scala> val array = new Array(5) array: Array[Nothing] = Array(null, null, null, null, null) scala> array.map(_ => 42) <console>:9: error: value map is not a member of Array[Nothing]

    5熱度

    2回答

    我一直在尋找折方式是immutable.Set定義: def fold [A1 >: A] (z: A1)(op: (A1, A1) ⇒ A1): A1 但foldLeft被定義爲: def foldLeft [B] (z: B)(op: (B, A) ⇒ B): B 這看起來奇怪對我來說,至少在乍看之下,因爲我希望fold能夠改變它返回的集合的類型,就像foldLeft一樣。 我想這是因

    3熱度

    3回答

    地圖我有它運行無差錯的Perl腳本,已(跳過許多不相關的線) use HTML::Entities; my @keys = ('ID', 'first', 'last'); # data is not actually constant my @encodedKeys = map(encode_entities, @keys); 。但是,當我嘗試訪問數組中的值,我得到的錯誤: Use of

    8熱度

    1回答

    我一直在閱讀關於組合器並且看到它們是多麼有用的(例如,在Haskell的Parsec中)。我的問題是,我不太清楚如何實際使用它們。 下面是問題概述:可以生成,過濾和修改分佈。分銷可以合併以創造新的分銷。 基本接口(僞哈斯克爾類型的術語): generator:: parameters -> distribution selector:: parameters -> (distributio

    2熱度

    2回答

    我有一門關於函數式編程的大學課程,我使用SML。作爲考試的準備,我正在研究一些沒有解決方案的老考試。 一個唯一的問題我真的有問題,是使用foldl以下問題: 考慮程序框架:樂趣 addGtķXS = List.foldl(...)... XS ; 填充兩個缺件 (用點表示),以便 addGt k xs是xs中那些元素的總和,它們大於 k。例如,addGt 4 - [1,5,2,7, 4,8] =

    7熱度

    1回答

    如果我定義返回這樣的功能的函數: (defn add-n [n] (fn [x] (+ x n))) 我可以將結果再賦值給一個符號: (def add-1 (add-n 1)) ,並調用它: (add-1 41) ;=> 42 如何將(add-n 1)的結果不分配給新的符號?以下產生此輸出: (println (add-n 1)) #<user$add_n$fn

    2熱度

    3回答

    這是我的earlier question的後續。 我想出了一個奇怪的對象方案,從我讀Let Over Lambda,可以想到沒有優於協議,但想獲得意見。我只是在探索使用更高階的函數和封裝。 (defn new-person "Construct a new Person object and return a Map of accessor methods." [init-fi

    10熱度

    2回答

    我有許多更高級的實用程序函數,它們接受代碼引用並將該代碼應用於某些數據。其中一些功能需要在執行子程序期間對變量進行本地化。在開始的時候,我用caller來確定要定位哪個包入,以類似的方式,如本示例中所示reduce功能:但是,一旦 sub reduce (&@) { my $code = shift; my $caller = caller; my ($ca, $c