函數語言程式設計學習-SICP-LISP-流STREAM的實現-流程式設計思路和惰性/延時求值2
如何與時間解耦
流式程式
看待流的方法:即一下子處理了整個流。
準備例子:
第一個例子:將兩個流相加。
第二個例子:運用到流上的所有專案
一個由1組成的無盡列表
如何定義整數:
定義斐波那契數列
何做到不要顯式定義很多delay?
讓整個底層都延時。讓delay自動內建在語言之中。
這種語言叫做“正則序求值”(normal order)語言。而我們一直用的語言叫做application-order語言。即先求引數,再求值。而前者把整個引數放到函式中。
如果這樣做了,cons也會自動變成cons-stream。有人這樣做了。
但是,如果我們放棄了對時間的控制,雖然程式碼優雅,但是表達力下降。
比如,迭代函式會一直迭代下去。這是一個缺點。
正則序和副作用直接不能良好配合。不能建模具有區域性狀態的變數,又用正則序的方法解耦時間。
(據說haskell中的monad可以解決這個問題?)
比如:
在正則序的環境裡:
如何處理這個問題?——放棄區域性狀態這件事
函數語言程式設計。
相關文章
- Java 函數語言程式設計(三)流(Stream)Java函數程式設計
- 函數語言程式設計(Lambda、Stream流、Optional等)函數程式設計
- Java中的函數語言程式設計(八)流Stream並行程式設計Java函數程式設計並行行程
- 資料流&函數語言程式設計函數程式設計
- 筆記:Haskell函數語言程式設計入門 - 惰性求值簡介筆記Haskell函數程式設計
- Java 中的資料流和函數語言程式設計Java函數程式設計
- Java中的函數語言程式設計(七)流Stream的Map-Reduce操作Java函數程式設計
- 簡化stream流等工具類(函數語言程式設計的應用案例)函數程式設計
- JavaScript函數語言程式設計學習JavaScript函數程式設計
- DDD的函數語言程式設計實現函數程式設計
- 使用JavaScript實現“真·函數語言程式設計”-2JavaScript函數程式設計
- Haskell學習-函數語言程式設計初探Haskell函數程式設計
- 深入學習javascript函數語言程式設計JavaScript函數程式設計
- JavaScript學習(3):函數語言程式設計JavaScript函數程式設計
- 淺談函數語言程式設計與 Java Stream函數程式設計Java
- lua學習: lua及函數語言程式設計語言函數程式設計
- Python函數語言程式設計系列007:惰性求值Python函數程式設計
- Python學習之函數語言程式設計Python函數程式設計
- 函數語言程式設計函數程式設計
- Scala 函數語言程式設計(一) 什麼是函數語言程式設計?函數程式設計
- 使用JavaScript實現“真·函數語言程式設計”JavaScript函數程式設計
- JavaScript 函數語言程式設計中的 curry 實現JavaScript函數程式設計
- 如何學會函數語言程式設計函數程式設計
- 函數語言程式設計最佳實踐函數程式設計
- 函數語言程式設計(2) 高階函式函數程式設計函式
- .NET併發程式設計-函數語言程式設計程式設計函數
- 函數語言程式設計-鏈式程式設計RAC函數程式設計
- RxJava2.x 學習筆記(一)函數語言程式設計RxJava筆記函數程式設計
- RAC的函數語言程式設計函數程式設計
- 函數語言程式設計,真香函數程式設計
- Java 函數語言程式設計Java函數程式設計
- javascript函數語言程式設計JavaScript函數程式設計
- 初探函數語言程式設計函數程式設計
- 函數語言程式設計初探函數程式設計
- JavaScript 函數語言程式設計JavaScript函數程式設計
- 關於函數語言程式設計的思考(2)函數程式設計
- Java Stream函數語言程式設計案例圖文詳解Java函數程式設計
- 快速掌握Java8 Stream函數語言程式設計技巧Java函數程式設計