是否有可能實現Scheme函數(一個函數 - 它的重要),它獲得一個列表和k,並且檢索k的大小排列,例如:(1 2 3) ,k = 2將輸出{(1,1),(1,2),(1,3),(2,1),(2,2),...}(9個選項)。創建k大小的排列而不定義更多的功能
-2
A
回答
-1
它可以做任何事情沒有,只要你有拉姆達定義什麼:
(define (fib n)
;; bad internal definition
(define (helper n a b)
(if (zero? n)
a
(helper (- n 1) b (+ a b))))
(helper n 0 1))
使用ž組合子:
(define Z
(lambda (f)
((lambda (g)
(f (lambda args (apply (g g) args))))
(lambda (g)
(f (lambda args (apply (g g) args)))))))
(define (fib n)
((Z (lambda (helper)
(lambda (n a b)
(if (zero? n)
a
(helper (- n 1) b (+ a b))))))
n 0 1))
現在,我們從來沒有叫Z SO我們可以替代的價值Z爲Z的功能,它會做同樣的事情:
(define (fib n)
(((lambda (f)
((lambda (g)
(f (lambda args (apply (g g) args))))
(lambda (g)
(f (lambda args (apply (g g) args))))))
(lambda (helper)
(lambda (n a b)
(if (zero? n)
a
(helper (- n 1) b (+ a b))))))
n 0 1))
有你去,薩由Alonzo Church。
-1
這不僅是可能的,它很容易。只需使用一個loop
:
(define permute
(lambda (k lst)
(let loop ((result (map list lst))
(i 1))
(if (= i k)
result
(loop
;; code to add each element of the original list
;; to each element of the result list
(1+ i))))))
相關問題
- 1. 如何從更大的功能創建更小的功能?
- 2. 不區分大小寫的自定義排序功能
- 3. C++「更大」的功能對象定義
- 4. 許多選擇的計數(),最大(),最小()功能定義
- 5. 創建自定義XSLT的功能
- 6. 不能在C中創建自定義數組大小表?
- 7. 功能定義,而{}
- 8. Haskell的功能定義,而不 - >
- 9. 功能沒有定義調整大小
- 10. 不能創建大小8937的一排,比8060
- 11. 排序大小爲k的problem- N/K的間隔的每個
- 12. 定義jQuery的點擊功能多頭排列
- 13. Tricky數學! Ñ大小K個陣列(總KXN),需要的大小爲N的所有可能的排列
- 14. 更改位圖大小而不創建新的位圖
- 15. 不同大小的排列
- 16. 更多Pythonic(或許功能)創建此列表的方式?
- 17. 通過不同變量的不同功能創建多個列
- 18. 創建固定大小元素列表中的非重複排列列表
- 19. 創建後Azure隊列更改大小
- 20. 如何創建多個更改功能
- 21. 創建自定義窗口功能
- 22. 創建自定義錯誤功能CNTK
- 23. 創建JS鍵盤,功能未定義?
- 24. 從特定屏幕大小的功能中排除JavaScript
- 25. 不能創建一個指定大小的向量
- 26. 未定義不是創建工作簿時的功能
- 27. WPF TextBlock.TextTrimming不能與自動調整大小的列定義
- 28. 在排序的固定大小列表中運行頂部k個元素/ python
- 29. <功能列表>多重定義
- 30. AngularJS中的自定義排序功能
當然是了。你有什麼嘗試? –
定義更多功能是什麼意思?你的意思是你只想暴露一個全局或你是否受限於創建本地函數呢?匿名函數可以嗎?除非你的問題顯示出努力,否則你很可能不會得到包含代碼的答案。告訴我們你到目前爲止所嘗試過的!使用編輯按鈕。 – Sylwester