Re: [問題] 增加自變量

看板Programming作者 (XOO)時間16年前 (2009/07/10 01:43), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/3 (看更多)
※ 引述《skgic (Ru|Ki)》之銘言: : ANSI-LISP書中提到一個c做不到例子: : "寫一個函數接受數n, 返回一個函數: 它把n增加到它的自變量上去 " : *******程式碼******* : (defun addn (n) : #'(lambda (x) : (+ x n))) : ******************** : C作不到的原因是沒辦法把funtion當作參數傳遞 應該沒理解錯吧? : 但還是看不懂n加到自變量上面的意思是指什麼 : 請問有沒有比較簡單的說明這個題目 : 謝謝<(_ _)> 在 C++ 可以用 std::functional 來作這些 trick,不過很綁手綁腳, 不像 functional programming 那樣直接。大概像是這樣: struct addn : public binary_function<int,int,int> { int operator() (int a, int b) {return (a + b);} }; // addn(x, y) = x + y bind1st(add_to() ,10) // 大概像是這樣,很久沒用了 ... // f(y) = 10 + y 上面那個函數用 Haskell 這類的語言寫起來,會是 addn :: Int -> Int -> Int addn x n = x + n 上面這個 Int -> Int -> Int 其實是 Int -> (Int -> Int) 的省略寫法,意思是 傳進一個型別 Int 的元素,會得到一個整數到整數的函數,所以再 apply 一個 就會得到 Int。但是在 C 的話,對應的型別應該是 addn :: (Int x Int) -> Int 必須傳進兩個 Int 才可以。雖然可以用 function pointer 傳函數,但是 要作這些運算的時候就顯得很囉唆 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.193.218.153 ※ 編輯: xcycl 來自: 123.193.218.153 (07/10 01:52)
文章代碼(AID): #1ALYnLZi (Programming)
文章代碼(AID): #1ALYnLZi (Programming)