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