Haskell語言學習筆記(77)fix
fix
fix 是一個在 Data.Function 中定義的函數,主要用於定義不動點函數。
fix :: (a -> a) -> a
fix f = let x = f x in x
fix 函數的定義使用了遞歸綁定,比較難以理解:
fix f = let x = f x in x = let x = f x in f x = let x = f x in f (f x) = let x = f x in f (f (f x)) = let x = f x in f (f .. (f (f x)) ..) = let x = f x in f . f . ... . f . f $ x
即 fix 函數的實質是無限多次調用函數 f,直至函數 f 結束遞歸並產生一種能被自身調用的數據結構。
這裏的最終參數 x 是一個永遠不會被調用的參數,也就是一個占位符。
Haskell語言學習筆記(77)fix
相關推薦
Haskell語言學習筆記(77)fix
fix 被調用 一個 func ask 定義 調用 ... 就是 fix fix 是一個在 Data.Function 中定義的函數,主要用於定義不動點函數。 fix :: (a -> a) -> a fix f = let x = f x in x fix 函
Haskell語言學習筆記(19)File IO
副作用 才會 lose file 類型 ask pen 函數 有效 關於IO Action 類型為IO t。 運算時不執行,因而沒有任何效果,只有執行時才會有效果,產生副作用。 一個IO Action只有在其他IO Action中才能被執行。 類型為IO t的I
Haskell語言學習筆記(49)ByteString Text
同義詞 replace 文本文件 惰性 code nic 文本文 字符串 存在 Data.ByteString String 是 [Char] 的同義詞,在使用上存在List的惰性所帶來的性能問題。 在處理大型二進制文件時,可以使用 ByteString 來代替 Strin
Haskell語言學習筆記(57)Parsec(4)
left 失敗 right identity parse div 狀態 匹配 出錯信息 Parser 類型 data ParsecT s u m a type Parsec s u = ParsecT s u Identity type Parser = Parsec St
Haskell語言學習筆記(64)Lens(4)
.cn str .com get prev blog int vista pri Prisms data NewTask = SimpleTask String | HarderTask String Int | CompoundTask String [New
Haskell語言學習筆記(69)Yesod
log class core sta hello 安裝失敗 platform gpo info Yesod Yesod 是一個使用 Haskell 語言的 Web 框架。 安裝 Yesod 首先更新 Haskell Platform 到最新版 (Yesod 依賴的庫非常多,
Haskell語言學習筆記(81)Data.Typeable
http https href 筆記 The 動態 tps -type overflow Data.Typeable 利用 Data.Typeable,可以打印動態類型信息。 class Typeable (a :: k) where typeRep# :: TypeR
Haskell語言學習筆記(93)Data.Text
Data.Text.Read Prelude> :set -XOverloadedStrings Prelude> :m +Data.Text.Read Prelude Data.Text.Read> decimal "123" Right (123,"") Prelude Data.Te
Haskell語言學習筆記(1)
Haskell語言 Haskell is a purely-functional, strongly-typed, lazily-executed, expressive higher-level programming language. Haskell 是一種純函式型的
c 語言學習筆記(一)基礎
lac alert https 內容 con 標記 prime c++ prime c基礎 近期工作上有對C語言算法上的需求,所以要學C,上學的時候沒學過,只學過半年的Java(我是專升本,本科學的材料),2015年工作後也學過C,那時候的需求是能看懂就可以,也就沒深入研究
Go語言學習筆記(五)文件操作
see 大小 unix rdo 筆記 不能 hid code lag 加 Golang學習 QQ群共同學習進步成家立業工作 ^-^ 群號:96933959 文件讀取 os.File 封裝了文件相關操作 type File File代表一個打開的文件對象。
R語言學習筆記(十三):時間序列
abs 以及 stat max 時間 aic air ror imp #生成時間序列對象 sales<-c(18,33,41,7,34,35,24,25,24,21,25,20,22,31,40,29,25,21,22,54,31,25,26,35) tsal
Scala語言學習筆記(4)
method point 強制轉換 參數 logs https fun 強制 n) 高階函數 // 高階函數 map val salaries = Seq(20000, 70000, 40000) val doubleSalary = (x: Int) => x *
匯編語言學習筆記(8)——數據處理的基本問題
byte 緩沖器 表達 基本 操作 進行 能夠 ng- 尺寸 1、僅僅有“bx、si、di、 bp”四個寄存器能夠用在[…]中來進行內存單元的尋址 2、這四個寄存
go語言學習筆記(4)--容器與字符串的基本概念
都是 empty 知識 nil 來講 java nbsp unicode ... 一、 Slice(切片) package main import ( "fmt" ) //切片,slice func main() { arr := [...]int{1,2,
Go語言學習筆記(1)——順序編程
寫法 AR [] 多重賦值 返回值 賦值 表達 div long Go語言學習筆記這一堆主要是《Go語言編程》(人民郵電出版社)的讀書筆記。中間會穿插一些零碎的點,比如源碼學習之類的。大概就是這樣吧。 1. 順序編程 1.1 變量 變量的聲明: var 變量名 類型 va
Rust語言學習筆記(5)
完全 ack 結構 some not eight bject pixel ring Structs(結構體) struct User { username: String, email: String, sign_in_count: u64,
Rust語言學習筆記(6)
course lin key ati clas mem nsh lis The Traits(特質) // 特質 pub trait Summary { fn summarize(&self) -> String; } pub struct NewsA
Go語言學習筆記(2)
world int 數組 [1] string 語言學 rim str name 數組 var a [2]string a[0] = "Hello" a[1] = "World" primes := [6]int{2, 3, 5, 7
Rust語言學習筆記(7)
src mod 四個文件 lib clas nec rust語言 () connect 模塊 // 兄弟模塊 mod network { fn connect() { } } mod client { fn connect() { } } /