惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Hugging Face - Blog
Hugging Face - Blog
Jina AI
Jina AI
宝玉的分享
宝玉的分享
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
博客园 - 聂微东
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
J
Java Code Geeks
博客园 - 【当耐特】
小众软件
小众软件
博客园 - Franky
S
SegmentFault 最新的问题
WordPress大学
WordPress大学
雷峰网
雷峰网
The Cloudflare Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
量子位
Last Week in AI
Last Week in AI
博客园_首页
月光博客
月光博客
IT之家
IT之家
阮一峰的网络日志
阮一峰的网络日志
Webroot Blog
Webroot Blog
Stack Overflow Blog
Stack Overflow Blog
腾讯CDC
云风的 BLOG
云风的 BLOG
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
W
WeLiveSecurity
Recent Commits to openclaw:main
Recent Commits to openclaw:main
D
Docker
The Last Watchdog
The Last Watchdog
有赞技术团队
有赞技术团队
Hacker News - Newest:
Hacker News - Newest: "LLM"
D
DataBreaches.Net
S
Security @ Cisco Blogs
Blog — PlanetScale
Blog — PlanetScale
GbyAI
GbyAI
TaoSecurity Blog
TaoSecurity Blog
S
Security Affairs
Y
Y Combinator Blog
O
OpenAI News
罗磊的独立博客
MongoDB | Blog
MongoDB | Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Forbes - Security
Forbes - Security
P
Palo Alto Networks Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
K
Kaspersky official blog
Cloudbric
Cloudbric

Haskell

哪个函数返回参数本身? - V2EX GHC 9.2 发布了 - V2EX 那本书可以称为编程界的《葵花宝典》? - V2EX 国内有什么好的 Haskell 社群( qq/wechat/论坛)吗? - V2EX 如何修复错误“Variable not in scope: md5 :: C8.ByteString -> a0”? - V2EX Haskell 这门语言怎么样? - V2EX 写了篇 Applicative 的小总结~ - V2EX 有没有小伙伴一起来团购 Haskell Programming 这本书 - V2EX 为什么学了 Haskell,果然印证了 V2EX 上的 智者(忘记网名)的断论,“学了 Haskell,回不去了“, 回不去了耶。 - V2EX 贴 Haskell 代码,解一道小题。给任意字符串,找出长度最长的数字串。请随意扔砖头。 http://www.v2ex.com/t/259360#reply18 - V2EX 一个很酷的 Hakyll 静态博客例子 - V2EX 学习 Haskell 过程中,写了一篇对 Functor 的总结 - V2EX 发现一本好书《Haskell Data Analysis Cookbook》 - V2EX How to Write a Spelling Corrector - Haskell - V2EX Haskell 入门学习资料整理 - V2EX Haskell for Mac - V2EX Yesod - Haskell 的 Web 开发框架 - V2EX Haskell 怎么在只有一个元素的列表上定义函数 - V2EX Haskell 很适合做编译器前端 - V2EX Introduction to Haskell - V2EX 在 Github 上弄了一个 blog, 写写 Haskell - V2EX 关于一些名词翻译的确定 - V2EX 有没有人有兴趣补完 《趣学指南》 的汉语翻译? - V2EX 贺 haskell 开区,这是交流处。 - V2EX
一段 Haskell 代码求助! - V2EX
wcp1231 · 2014-11-04 · via Haskell
yukirock

1

yukirock      2014 年 11 月 4 日   ❤️ 1

rec.tail 是函數複合,形如把 f(g(x)) 寫成 (f . g) x 的形式。一般會寫成點號前後各留一個空格,像 rec . tail 這樣。

這裏這個 foldr 的確是返回一個複合函數。它的意義是,給一個 list,如果這個 list 的開頭有多少個能令 predicate x 爲 True 的 x,就返回一個複合了多少個 tail 的複合函數,然後對參數 list 調用這個複合函數。

這麼說不好理解,舉個例子。

*Main> dropWhile'' (<3) [1,2,3,4,5,4,3,2,1]
[3,4,5,4,3,2,1]

foldr 是從右向左掃,掃到右邊的 1,2 時 accumulator 暫時是 (id . tail . tail);掃到 3 的時候返回 id,相當於 accumulator 清空;再掃到前面的 3 爲止都是 id,掃到前面的 2 時,因爲滿足 predicate x 爲 True,所以返回一個 (id . tail),掃到 1 就變成 (id . tail . tail)。最後就相當於對參數的 list 調用 (id . tail . tail) 這樣一個有兩個 tail 的複合函數。

如果我們在這個 list 前面再加一個令 predicate x 爲 False 的值例如 3,參數給成 [3,1,2,3,4,5,4,3,2,1],那麼這個 foldr 還是和先前一樣從右向左掃,掃到 list 第二位的 1 時爲 (id . tail . tail),然後遇到 3,清空變成 id,dropWhile'' 就變成了 id [3,1,2,3,4,5,4,3,2,1],返回 [3,1,2,3,4,5,4,3,2,1]。