Skip to Content
深入理解運算原理|從簡單的機器到無所不能的程式
book

深入理解運算原理|從簡單的機器到無所不能的程式

by Tom Stuart
November 2017
Beginner to intermediate
344 pages
7h 2m
Chinese
GoTop Information, Inc.
Content preview from 深入理解運算原理|從簡單的機器到無所不能的程式
200
|
6
程式設計進階技巧
構建程式卻完全沒有 proc 耗費更多心力,但是我們已經看到,只要不在意用點創造
力,就可以完成真正的工作。我們很快的討論幾種在這個最小環境編寫程式碼的其他技
巧。
無限串流
使用程式碼表示資料有一些有趣的優點。我們以 proc 為基礎的串列不一定是靜態:串
列只是在我們將它傳給
FIRST
REST
之際,執行正確運算的程式碼,因此我們很容易就
能實作忙著計算它們內容的串列,也就是所謂的
串流
stream
)。實際上,串流甚至沒
有理由必須是有限,因為在消耗它們的時候,計算只能產生串列內容,所以它可以持續
不斷產生新的值。
舉例來說,以下實作了無限串流的零:
ZEROS = Z[-> f { UNSHIFT[f][ZERO] }]
這是『無欺騙手段』版本的
ZEROS = UNSHIFT [ZEROS] [ZERO]
,是根據自身
的資料結構定義。作為程式開發人員,根據自身定義遞迴函式的想法,通
常會讓我們覺得滿意,但是根據自身定義的資料結構看起來可能很奇怪,
而且不尋常;它們在這種情況都完全一樣,而且 Z 組合器會讓兩者完全
合乎邏輯。
我們可以在主控台看到
ZEROS
的行為就像是串列,儘管好像可以無限延長:
>> to_integer(FIRST[ZEROS])
=> 0
>> to_integer(FIRST[REST[ZEROS]])
=> 0
>> to_integer(FIRST[REST[REST[REST[REST[REST[ZEROS]]]]]])
=> 0
雖然會將此串流轉換成 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.

Read now

Unlock full access

More than 5,000 organizations count on O’Reilly

AirBnbBlueOriginElectronic ArtsHomeDepotNasdaqRakutenTata Consultancy Services

QuotationMarkO’Reilly covers everything we've got, with content to help us build a world-class technology community, upgrade the capabilities and competencies of our teams, and improve overall team performance as well as their engagement.
Julian F.
Head of Cybersecurity
QuotationMarkI wanted to learn C and C++, but it didn't click for me until I picked up an O'Reilly book. When I went on the O’Reilly platform, I was astonished to find all the books there, plus live events and sandboxes so you could play around with the technology.
Addison B.
Field Engineer
QuotationMarkI’ve been on the O’Reilly platform for more than eight years. I use a couple of learning platforms, but I'm on O'Reilly more than anybody else. When you're there, you start learning. I'm never disappointed.
Amir M.
Data Platform Tech Lead
QuotationMarkI'm always learning. So when I got on to O'Reilly, I was like a kid in a candy store. There are playlists. There are answers. There's on-demand training. It's worth its weight in gold, in terms of what it allows me to do.
Mark W.
Embedded Software Engineer

You might also like

JSON實務手冊

JSON實務手冊

Tom Marrs

Publisher Resources

ISBN: 9789864766000