我需要一個函數,該函數接受任意數量的參數(相同類型的所有參數),對它們執行某些操作,然后返回結果。在我的具體情況下,參數列表是不可行的。在瀏覽haskell庫時,我看到該函數printf(來自module Text.Printf)使用了類似的技巧。不幸的是,通過查看源代碼我無法理解這種魔力。有人可以解釋如何實現這一目標,或者至少可以解釋一些網頁/論文/無論我能在哪里找到合適的描述嗎?動機:我需要這個的原因確實很簡單。對于學校(計算機科學課),我們需要編寫一個模塊,該模塊能夠“記錄”數學表達式,將其表示為字符串(通過為自己的數據類型編寫Num / Real / etc實例),然后執行各種操作就可以了。此數據類型包含變量的特殊構造函數,可以用值或指定函數替換任何值。目標之一是編寫一個函數,該函數采用帶有一些變量(成對的type (Char,Rational))的表達式,并計算表達式的結果。我們應該看看如何最好地表達功能的目標。(我的想法:該函數返回另一個函數,該函數接受與該函數中定義的var一樣多的參數-似乎是不可能的)。
3 回答

料青山看我應如是
TA貢獻1772條經驗 獲得超8個贊
下面是一個執行過程的示例,sumOf 1 4 7 10 :: Integer可以提供更好的說明。
sumOf 1 4 7 10
(( \ x -> ( sumOf . (x +) . toInteger ) 1 ) 4 7 10
((sumOf . (1 + ) . toInteger) 4 ) 7 10
( sumOf 5 ) 7 10
( sumOf . (5 + ) . toInteger ) 7 10
sumOf 12 10
sumOf . (12 + ) . toInteger 10
sumof 22
id 22
22
添加回答
舉報
0/150
提交
取消