Haskell函数式程序设计

Haskell函数式程序设计 pdf epub mobi txt 电子书 下载 2025

[英] 理查德·伯德 著,乔海燕 译
图书标签:
  • Haskell
  • 函数式编程
  • 编程语言
  • 计算机科学
  • 软件开发
  • 算法
  • 数据结构
  • 类型系统
  • 并发
  • 领域特定语言
想要找书就要到 静流书站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 机械工业出版社
ISBN:9787111529323
版次:1
商品编码:11886256
品牌:机工出版
包装:平装
丛书名: 计算机科学丛书
开本:16开
出版时间:2016-03-01
用纸:胶版纸
页数:233

具体描述

编辑推荐

Richard Bird教授的文字以清晰和严谨著称,他为初学函数式程序设计的学生所著的这本新教材,强调利用数学思维进行推理的基本方法。在解决问题时,首先从显而易见的简单方法入手,然后应用一些熟知的恒等式,运用等式规则逐步推理,最终得到效率倍增的解。在这一过程中,学生不仅理解了程序的性质,而且实现了更高效的计算。本书特色涵盖Haskell的大量特性,但不拘泥于语言细节,而是借助它来阐明函数式程序设计的思想和方法。包含数独实例和精美打印实例,以及100余道精心挑选的习题,并配有详尽的解答。

内容简介

  本书通过Haskell语言介绍函数式程序设计的基本思想和方法,讲解如何将数学思维应用于程序设计问题,以实现更高效的计算。本书涵盖Haskell的诸多特性,但并不是这门语言的参考指南,而是旨在利用丰富的实例和练习揭示函数式程序设计的本质。本书不要求读者具备程序设计基础,所涉及的数学知识也并不高深,既适合初学者阅读,也适合有经验的程序员参考。

作者简介

  理查德·伯德(RichardBird)牛漳大学计算机实验室的荣誉退休教授,牛津大学林肯学院的研究员。他的著述颇丰,包括《AlgebraofProgramming》(PrenticeHall,1996)和《PearlsOfFunctionalALgorithmDesign》(CambridgeUniversityPress,2010)。

目录

出版者的话
译者序
前言
第1章何谓函数式程序设计1
1.1函数和类型1
1.2函数复合2
1.3例子:高频词2
1.4例子:数字转换为词5
1.5Haskell平台8
1.6习题9
1.7答案11
1.8注记13
第2章表达式、类型和值15
2.1GHCi会话15
2.2名称和运算符17
2.3求值18
2.4类型和类族20
2.5打印值22
2.6模块24
2.7Haskell版面24
2.8习题25
2.9答案29
2.10注记32
第3章数33
3.1类族Num33
3.2其他数值类族33
3.3取底函数的计算35
3.4自然数37
3.5习题39
3.6答案40
3.7注记41
第4章列表42
4.1列表记法42
4.2枚举43
4.3列表概括43
4.4一些基本运算45
4.5串联46
4.6函数cancat、map和filter46
4.7函数zip和zipWith49
4.8高频词的完整解50
4.9习题52
4.10答案55
4.11注记58
第5章一个简单的数独求解器59
5.1问题说明59
5.2合法程序的构造63
5.3修剪选择矩阵64
5.4格子的扩展67
5.5习题70
5.6答案71
5.7注记72
第6章证明73
6.1自然数上的归纳法73
6.2列表归纳法74
6.3函数foldr78
6.4函数foldl81
6.5函数scanl83
6.6最大连续段和问题84
6.7习题87
6.8答案90
6.9注记96第7章效率977.1惰性求值97
7.2空间的控制100
7.3运行时间的控制103
7.4时间分析104
7.5累积参数106
7.6元组109
7.7排序112
7.8习题115
7.9答案117
7.10注记120
第8章精美打印121
8.1问题背景121
8.2文档122
8.3一种直接实现125
8.4例子126
8.5最佳格式128
8.6项表示129
8.7习题133
8.8答案135
8.9注记139
第9章无穷列表140
9.1复习140
9.2循环列表141
9.3作为极限的无穷列表143
9.4石头剪刀布147
9.5基于流的交互151
9.6双向链表152
9.7习题154
9.8答案156
9.9注记158
第10章命令式函数式程序设计159
10.1IO单子159
10.2更多的单子162
10.3状态单子165
10.4ST单子167
10.5可变数组169
10.6不变数组173
10.7习题175
10.8答案178
10.9注记183
第11章句法分析184
11.1单子句法分析器184
11.2基本分析器186
11.3选择与重复187
11.4语法与表达式190
11.5显示表达式192
11.6习题194
11.7答案196
11.8注记198
第12章一个简单的等式计算器199
12.1基本思想199
12.2表达式203
12.3定律206
12.4计算208
12.5重写210
12.6匹配211
12.7代换213
12.8测试计算器214
12.9习题221
12.10答案222
12.11注记224
索引225

前言/序言

  本书是《IntroductiontoFunctionalProgrammingUsingHaskell,SecondEdition》的全新升级,主要变化有:重新组织部分介绍性内容,以适应一个学期或者两个学期课程的不同需要;几个新的实例;100多道习题及其答案。与以前的版本一样,本书不需要读者具有计算机或者程序设计知识,因此本书适用于计算专业的第一门课程。
  在编写教材时,每个作者各具风格,本书也不例外。尽管现在有很多关于Haskell的书、教程、文章和博客等,但是很少有人强调用数学思维思考函数式程序设计的能力,在我看来,正是这种能力使其成为有史以来最棒的程序设计方法。这其中所涉及的数学知识既不新也不复杂,任何学过高中数学(如三角函数)并且应用三角函数恒等式化简过正余弦表达式(一个典型的例子:将sin3α用sinα来表示)的学生很快会发现,在程序设计问题中所要做的工作是完全类似的。使用函数式程序设计所获得的回报是更快的计算。即使在30年后,我依然使用这样的方法,并能从中得到很大的快乐:在解决问题时首先从一个简单、明显却不太高效的方法入手,然后应用一些熟知的恒等式,最后得到一个高效10倍的解。当然,如果我运气好的话。
  如果上一段的最后一句让你失去兴趣,如果你一直在远离数学的“魔多”(Mordor),那么本书可能不适合你。我只是说有这种可能,但也不一定(没有人愿意失去读者)。我们在学习一种新的、令人兴奋的编程方法时仍能得到不少乐趣。即使是那些因为各种原因在日常工作中不能使用Haskell,而且也没有时间计算更优解的程序员,仍然因学习Haskell所带来的享受而倍受鼓舞,而且非常赞赏它既简单又清晰简洁地表达计算思想和方法的能力。事实上,用纯函数式表达程序设计思想的能力已经慢慢地融入了主流的命令式程序设计语言,如Python、VisualBasic和C#。
  最后,也是最重要的一点:Haskell是一种大规模语言,本书不能涵盖一切内容。本书不是Haskell的参考指南。尽管Haskell语言的细节在每一页出现,特别是在前几章,但是我的初衷是讲解函数式程序设计的本质,用函数思考程序的思想,而不是赘述一种特定语言的特点。但是,过去几年来Haskell已经吸收并实现了早期函数语言(如SASL、KRC、Miranda、Orwell和Gofer)中表达的函数式程序设计的大多数思想,而且难以抵挡用这种超酷语言介绍所有这些特性的诱惑。
  书中出现的大多数程序可以在下列网页上找到:
  www.cs.ox.ac.uk/publications/books/functional希望将来有更多习题(及答案)和编程项目的建议等可以添加进来。关于Haskell的更多信息,读者应该首选官网www.haskell.org。
  致谢本书源于我基于第2版所写的讲义。来自助教和学生的意见和建议为本书增添了很多光彩。另有很多读者通过电子邮件给出建设性的评论和批评,或者指出书中的打字错误和低级错误。这些读者包括:NilsAndersen,AniCalinescu,FranklinChen,SharonCurtis,MartinFilby,SimonFinn,JeroenFokker,MaartenFokkinga,JeremyGibbons,RobertGiegerich,KevinHammond,RalfHinze,GerardHuet,MichaelHinchey,TonyHoare,IainHouston,JohnHughes,GrahamHutton,CezarIonescu,StephenJarvis,GeraintJones,MarkJones,JohnLaunchbury,PaulLicameli,DavidLester,IainMacCullum,UrsulaMartin,LambertMeertens,ErikMeijer,QuentinMiller,OegedeMoor,ChrisOkasaki,OskarPermvall,SimonPeytonJones,MarkRamaer,HamiltonRichards,DanRussell,DonSannella,AntonySimmons,DeepakD’Souza,JohnSpanondakis,MikeSpivey,JoeStoy,BernardSufrin,MasatoTakeichi,PeterThiemann,DavidTurner,ColinWatson和StephenWilson。特别是JeremyGibbons、BernardSufrin和JoséPedroMagalhǎes阅读了初稿,并提出了许多建议。
  感谢剑桥大学出版社编辑DavidTranah持续不断的建议和支持。我现在是牛津大学计算机系荣誉退休教授,感谢计算机系和系主任BillRoscoe的一贯支持。
  格式说明习题习题A请用sinα表示sin3α。
  答案习题A答案sin3α={算术}sin(2α+α)={因为sin(α+β)=sinαcosβ+cosαsinβ}sin2αcosα+cos2αsinα={因为sin2α=2sinαcosα}.2sinαcos2α+cos2αsinα={因为cos2α=cos2α-sin2α}2sinαcos2α+(cos2α-sin2α)sinα={因为cos2α+sin2α=1}sinα(3-4sin2α)以上证明格式是由WimFeijen发明的,本书将使用这种证明格式。
  RichardBird


alt="" />
《精通函数式之道:现代编程范式的深度探索》 这是一本为渴望掌握现代软件开发前沿思想的程序员们精心打造的指南。本书并非简单罗列语法糖或工具的使用技巧,而是深入剖析函数式编程(FP)的核心哲学、内在逻辑及其在实际软件工程中的强大应用。我们将带领读者走出命令式和面向对象编程的舒适区,踏上一段重塑思维、拥抱简洁、强大与优雅的旅程。 本书的独特价值与核心内容: 本书不同于市面上许多浅尝辄止的函数式入门书籍,我们致力于提供一个全面、深刻且高度实践化的学习体验。以下是本书的核心内容概览: 第一部分:函数式编程的基石——思维的重塑 第一章:告别状态,拥抱纯粹——函数式思维的起源与核心。 我们将从历史的视角回溯,理解函数式编程为何应运而生,以及它如何解决传统编程范式中普遍存在的“状态管理”和“副作用”带来的复杂性。 纯函数的概念: 深入解析纯函数的定义,强调其“无副作用”和“引用透明性”两大特性。通过生动形象的例子,展示纯函数如何使代码更易于理解、测试和推理。我们将对比非纯函数,揭示副作用隐藏的陷阱。 不可变性(Immutability): 探讨不可变数据结构的重要性,以及它如何从根本上消除并发编程中的竞态条件和死锁问题。我们将介绍几种常见的不可变数据结构,并分析其在性能和内存管理上的权衡。 函数作为一等公民: 详细讲解函数在函数式编程中的地位,如何将函数作为参数传递、作为返回值返回,以及如何构建高阶函数。这将为后续学习组合子、柯里化等高级概念打下坚实基础。 第二章:组合的力量——构建复杂系统的抽象利器。 高阶函数(Higher-Order Functions): 深入研究 `map`、`filter`、`reduce`(`fold`)等核心高阶函数。我们将不止步于它们的用法,更要理解它们背后的抽象思想——“对集合进行某种形式的变换”。通过大量实例,展示如何用这些高阶函数简洁地表达复杂的迭代和转换逻辑。 柯里化(Currying)与部分应用(Partial Application): 揭示柯里化如何将多参数函数分解为一系列单参数函数,以及部分应用如何创建更具针对性的函数。我们将探讨它们在创建DSL(领域特定语言)、增强代码模块化方面的巨大潜力。 组合子(Combinators)与函数组合: 介绍组合子的概念,以及如何通过组合更小的、可复用的函数来构建复杂的功能。我们将重点讲解函数组合(`compose` 或 `pipe`)的艺术,展示如何用链式调用实现清晰、可读性强的代码。 第三章:惰性求值与按需计算——提升效率的智慧。 惰性求值(Lazy Evaluation): 深入理解惰性求值的机制,它如何延迟计算直到结果真正被需要。我们将分析惰性求值在处理无限数据结构、优化性能方面的优势。 延迟数据结构(Lazy Data Structures): 学习如何构建和使用延迟列表(Lazy Lists)、延迟流(Lazy Streams)等。通过实例,展示惰性求值如何帮助我们编写出更优雅、更高效的代码,尤其是在处理大规模数据集和潜在的无限序列时。 第二部分:函数式编程的实践——语言特性与模式 第四章:类型系统作为安全网——强类型下的优雅与健壮。 代数数据类型(Algebraic Data Types - ADTs): 深入理解代数数据类型,包括积类型(Product Types,如元组、记录)和和类型(Sum Types,如代数、枚举)。我们将重点讲解如何利用和类型(Variant Types/Discriminated Unions)来建模复杂的状态和错误处理。 模式匹配(Pattern Matching): 详解模式匹配的强大之处,它如何与代数数据类型协同工作,实现清晰、安全的解构和分支逻辑。我们将展示模式匹配如何替代冗余的`if-else`和`switch`语句,提高代码的可读性和可维护性。 泛型与类型类(Generics and Typeclasses): 探索泛型的应用,如何编写能够处理多种数据类型的通用函数。重点讲解类型类(Type Classes)的概念,它们如何提供一种强大的多态机制,实现代码的重用和扩展,而不会破坏封装性。 第五章:优雅地处理副作用——IO、Monad 与 Applicative。 副作用的本质与挑战: 再次审视副作用(如IO操作、状态修改、异常抛出)在函数式编程中的地位,以及为什么需要一种受控的方式来管理它们。 Monad 理论与实践: 深入剖析 Monad 的抽象概念,理解其“计算上下文”的本质。我们将通过 `Maybe` (或 `Option`)、`Either` (或 `Result`)、`IO` 等常见 Monad 的具体实现,来展示如何利用 `bind`(或 `flatMap`)和 `return`(或 `pure`)来构建清晰、可组合的副作用处理流程。 Applicative Functor: 介绍 Applicative Functor,它提供了比 Monad 更弱但更通用的组合能力,尤其适用于独立执行的计算。我们将对比 Monad 和 Applicative,理解它们各自的适用场景。 第六章:函数式并发与并行——迈向多核时代的利器。 无锁并发(Lock-Free Concurrency): 讲解函数式编程如何通过避免共享可变状态,从根本上简化并发程序的编写。我们将探讨不可变性在实现无锁并发中的关键作用。 Actor 模型与消息传递: 介绍 Actor 模型及其在并发编程中的应用,以及函数式语言如何优雅地支持这种模型。 并发抽象(Concurrency Abstractions): 探索现代函数式语言提供的各种并发抽象,如 `Future`、`Promise`、`Stream` 等,以及如何利用它们来编写高效、可伸缩的并发应用程序。 第三部分:函数式编程的进阶与应用 第七章:函数式设计模式——解耦、复用与抽象的升华。 函数式领域特定语言(DSLs): 学习如何利用函数式特性构建领域特定语言,从而用更贴近业务的语言来表达复杂逻辑,提升开发效率和代码可读性。 数据流编程(Dataflow Programming): 探讨数据流模型,以及函数式编程如何天然地支持这种模型,实现清晰的数据处理管道。 状态管理模式(State Management Patterns): 即使在函数式范式中,状态管理依然是重要的。我们将介绍一些函数式风格的状态管理模式,如 `State Monad` 的应用。 第八章:函数式性能优化——理解与实践。 内存管理与垃圾回收: 探讨不可变性对内存分配和垃圾回收的影响,以及如何进行有效的内存管理。 尾递归优化(Tail Call Optimization): 深入理解尾递归的原理,以及它如何将递归转换为迭代,避免栈溢出。 专业工具与技巧: 介绍一些用于性能分析和优化的函数式编程工具,并提供实用的优化技巧。 第九章:函数式编程的生态与未来——跨越语言界限。 主流函数式语言概览: 简要介绍一些主流的函数式编程语言(如 Scala, F, Clojure, Elm, Purescript 等),分析它们的特点和适用场景,以及它们如何借鉴和融合其他范式。 函数式思想在多范式语言中的应用: 探讨如何在 Java, Python, JavaScript 等多范式语言中实践函数式编程的思想和技巧,以及如何利用函数式库来提升现有项目的质量。 函数式编程的未来趋势: 展望函数式编程在软件开发领域的未来发展方向,以及它如何持续影响着编程语言的设计和软件工程实践。 本书的目标读者: 经验丰富的程序员: 渴望突破现有编程范式的局限,寻求更强大、更优雅的解决方案。 对函数式编程有初步了解但想深入学习的开发者: 希望系统地掌握函数式编程的核心概念和实践技巧。 对软件质量、可维护性和可伸缩性有高要求的工程师: 希望通过函数式编程来构建更健壮、更易于维护的系统。 计算机科学的学生和研究者: 希望深入理解编程语言理论和现代软件工程的最佳实践。 本书的学习方法: 本书的编写风格注重理论与实践的结合。每一章都配有丰富的代码示例,鼓励读者动手实践。我们建议读者在阅读过程中,积极尝试书中代码,甚至将其应用到自己的项目中,从而真正内化函数式编程的思维方式。 《精通函数式之道》将不仅仅是一本书,更是一次思维的革新。 通过本书,您将学会如何用一种全新的视角来看待代码,如何构建出更简洁、更强大、更易于推理的软件。加入我们,一起开启这段精通函数式之道的探索之旅吧!

用户评价

评分

这本书给我的感受就像是攀登一座巍峨的山峰,虽然过程充满挑战,但每一步攀登都让我视野更加开阔。对于有一定编程基础的我来说,Haskell的学习曲线确实是陡峭的,但这本书就像一位经验丰富的向导,指引我穿越迷雾,找到正确的方向。它不仅仅是关于Haskell的语法,更是关于一种全新的编程哲学。作者在书中非常强调“纯粹”的概念,让我理解了为什么函数式编程能够带来如此高的代码可靠性。从不可变数据结构到尾递归优化,再到类型系统的强大力量,书中每一个细节都体现了Haskell设计的精妙。我特别欣赏书中对组合子和 Applicative Functor 的讲解,这些概念在初学时可能显得抽象,但一旦掌握,就能极大地提升代码的表达力和复用性。书中的例子设计得非常巧妙,很多时候一个简单的函数就能完成非常复杂的任务,这让我对Haskell的简洁和强大赞叹不已。我常常在思考书中提出的问题时,发现自己对编程有了更深刻的理解。

评分

这本书带给我一种前所未有的编程体验,仿佛在一场智力探险中逐步揭开隐藏的宝藏。它没有像其他许多语言书籍那样,直接灌输API和语法规则,而是更侧重于培养一种“Haskell式”的思维方式。作者通过对纯函数、不可变性等核心概念的反复强调和细致剖析,让我深刻认识到函数式编程在代码可维护性、可测试性以及并发处理方面的巨大优势。书中对代数数据类型和模式匹配的讲解尤为精彩,它们提供了比传统面向对象编程更强大、更优雅的数据建模和逻辑处理能力。我印象深刻的是,书中有好几个章节深入探讨了Monad,虽然初次接触时觉得有些晦涩,但在作者的耐心讲解和一系列精心设计的练习下,我逐渐体会到了Monad在处理副作用、异步操作等复杂场景下的强大威力。这本书的语言风格也很吸引人,既有学术的严谨,又不失趣味性,偶尔还会穿插一些作者自己的见解和感悟,读起来一点也不枯燥。它让我明白,编程不仅仅是写代码,更是一种解决问题的艺术。

评分

这本书以其独特的视角和深入的解析,为我打开了函数式编程世界的大门。初次接触Haskell,我曾被其严谨的语法和抽象的概念所困扰,但这本书通过循序渐进的引导,将复杂的概念一一化解。作者并没有一味地堆砌理论,而是巧妙地结合了大量的实例,这些实例不仅贴合实际开发场景,更能帮助读者在实践中理解抽象的函数式思维。从简单的函数组合到高阶函数、currying,再到更复杂的类型类和Monad,每一个章节都构建在前一章节的基础上,形成了一个完整的知识体系。我尤其喜欢书中对递归和模式匹配的讲解,这两种Haskell的核心特性在书中得到了充分的展示,让我看到了代码简洁和表达力的强大。阅读过程中,我常常会停下来,反复揣摩代码的含义,尝试自己修改和扩展,这种互动式的学习方式极大地提升了我的学习效率。书中的一些“陷阱”和常见错误也得到了详细的分析,这对于避免新手走弯路非常有帮助。总而言之,这本书不仅仅是一本技术手册,更像是一次与Haskell思想的深度对话,让我从根本上理解了函数式编程的魅力。

评分

这本书的阅读体验与其说是学习,不如说更像是一次深入的哲学探讨。它并没有直接告诉你“如何做”,而是引导你去思考“为什么这么做”。Haskell的函数式特性,如高阶函数、柯里化、惰性求值等,在书中得到了非常细致的阐述,让我不仅知其然,更知其所以然。作者用一种非常清晰且富有洞察力的方式,解释了这些看似复杂的概念是如何构建起一个强大且优雅的编程体系的。我尤其喜欢书中关于类型系统的讨论,Haskell强大的类型系统在保证代码正确性方面起到了至关重要的作用,它让我在编写代码时就能够捕捉到很多潜在的错误,极大地提高了开发效率和信心。书中还涉及了一些函数式编程的高级主题,比如Functor、Monad、Applicative等,这些概念在其他语言中可能很难找到直接对应的实现,但在Haskell中却是核心。作者通过生动的比喻和逻辑严密的推导,让我逐渐理解了这些抽象概念的本质。阅读这本书,让我对编程的认知上升了一个维度。

评分

这本Haskell书籍是一次令人振奋的智力冒险,它颠覆了我过去对编程的许多固有认知。它没有像市面上大多数教材那样,追求广泛的覆盖面,而是精耕细作,将Haskell的核心概念讲透彻。书中对“纯函数”的反复强调,以及对“副作用”的严谨处理,让我深刻体会到函数式编程在代码的确定性和可预测性方面的优势。作者通过一系列精心设计的练习,引导我逐步掌握函数组合、模式匹配、递归等Haskell的基石。我特别喜欢书中关于“类型类”的讲解,它展示了一种强大的抽象机制,能够让不同的类型共享相同的行为,这在编写通用且可扩展的代码方面发挥着巨大的作用。书中对Monad的深入剖析,更是让我看到了如何优雅地处理I/O、异常等实际问题。我常常在阅读的过程中,回想起自己过去用命令式语言写过的那些冗长且容易出错的代码,不禁感慨Haskell带来的简洁和优雅。这本书不仅仅是传授一门语言,更是传授一种思考问题的方式,一种对代码质量的更高追求。

评分

入门还不错

评分

看了两天 觉得挺好……主体是思想内容而不是语法

评分

新的程序设计思想,开阔眼界!

评分

在我而言,好书评有两个标准。首先是最简单粗暴的:这个书评能不能引起我阅读原书的兴趣。如果能,那么这篇书评的质量就不会差到哪里去了。因为能引发阅读原书的兴趣的书评,必然有某处是能打动人的。其次是书评能否体现书评人自己的思考:比如说对书中人物情感的剖析;对作者写作技巧写作风格的分析总结;对书中不足之处的分析说明等等。因为这些内容才是成就一篇好书评的基础,这样一篇书评才能让人信服:书评人是真的把这本书读进去了,他对这本书的优劣之处了然于胸,他诚实地将这本书的闪光之处与缺陷以及自己的所感所思展示了出来。

评分

其实暂时还没有接触Haskell的打算,只是先屯着而已~~

评分

新的程序设计思想,开阔眼界!

评分

在我而言,好书评有两个标准。首先是最简单粗暴的:这个书评能不能引起我阅读原书的兴趣。如果能,那么这篇书评的质量就不会差到哪里去了。因为能引发阅读原书的兴趣的书评,必然有某处是能打动人的。其次是书评能否体现书评人自己的思考:比如说对书中人物情感的剖析;对作者写作技巧写作风格的分析总结;对书中不足之处的分析说明等等。因为这些内容才是成就一篇好书评的基础,这样一篇书评才能让人信服:书评人是真的把这本书读进去了,他对这本书的优劣之处了然于胸,他诚实地将这本书的闪光之处与缺陷以及自己的所感所思展示了出来。

评分

不错京东物流很快,一直在京东买书,有优惠就更好了……

评分

这本书还是有些难了,对我来说有难度,书的质量非常好

相关图书

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.coffeedeals.club All Rights Reserved. 静流书站 版权所有