4 一个会写诗的程序员

尚未进行身份认证

一个会写诗的程序员 Weibo: http://weibo.com/oranread 简书:http://www.jianshu.com/u/c55c7a9c8de6

等级
TA的下载次数 5

An introduction to functional programming through lambda calculus.PDF.zip

Author: Michaelson, Greg Functional programming is rooted in lambda calculus, which constitutes the world's smallest programming language. This well-respected text offers an accessible introduction to functional programming concepts and techniques for students of mathematics and computer science. The treatment is as nontechnical as possible, and it assumes no prior knowledge of mathematics or functional programming. Cogent examples illuminate the central ideas, and numerous exercises appear throughout the text, offering reinforcement of key concepts. All problems feature complete solutions.

2019-09-22

Kotlin极简教程 (陈光剑)

Kotlin 是 JetBrains 团队开发的一门现代的、注重工程实用性的静态类型编程语言, JetBrains 团队以开发了世界上最好用的 IDE 而著称。Kotlin 于 2010 年推出,并在 2011 年开 源。Kotlin 充分借鉴并汲取了 Java、Scala、Groovy、C#、Gosu、JavaScript、Swift 等多门杰 出语言的优秀特性,语法简单优雅、表现力丰富、抽象扩展方便、代码可重用性好,同时也 支持面向对象和函数式编程的多范式编程。Kotlin 可以编译成 Java 字节码运行在 JVM 平台 和 Android 平台,也可以编译成 JavaScript 运行在浏览器环境,而且还可以直接编译成机器码 的系统级程序,直接运行在嵌入式、iOS、MacOS/Linux/Windows 等没有 JVM 环境的平台。 Kotlin 源自产业界,它解决了工程实践中程序设计所面临的真实痛点,例如,类型系统可以避 免空指针异常的问题。 我最早是被 Kotlin 的下面这段代码所吸引: package com.easy.kotlin fun <A, B, C> compose(f: (B) -> C, g: (A) -> B): (A) -> C { return { x -> f(g(x)) } } fun isOdd(x: Int) = x % 2 != 0 fun length(s: String) = s.length fun main(args: Array<String>) { val oddLength = compose(::isOdd, ::length) val strings = listOf("a", "ab", "abc") println(strings.filter(oddLength)) } 13 行。 这大约是在三年前,当时我在学习 Java 8 中的函数式编程以及 Lambda 表达式等新特性。 那时,我也对 Scala、Groovy、Clojure、Haskell 等技术很感兴趣,在伴随着兴趣的学习过程 中,我无意中看到了上面那段 Kotlin 代码,第一眼看到这么优雅的函数式编程风格,尤其是 compose 函数的定义实现,深深地吸引了我。 Swift 使用 func 关键字声明函数多个 c,怪怪的;Groovy、Scala 等语言使用 def 关键字, 与函数本义联想不直接;JavaScript 使用 function 关键字又显得死板了些。而 Kotlin 中的 fun 则简单优雅地恰到好处,关键还让人自然联想到“乐趣、开心、愉快”这样的意思,使用 Kotlin 每写一个函数都是充满乐趣的。 我们不妨来看看同样的逻辑实现,如果使用 Java 8 来写会如何: package com.easy.kotlin; import java.util.ArrayList; import java.util.List; interface G<A, B> { B apply(A a); } interface F<B, C> { C apply(B b); } interface FG<A, B, C> { C apply(A a); } public class ComposeFunInJava<A, B, C> { public static void main(String[] args) { G<String, Integer> g = (s) -> s.length(); F<Integer, Boolean> f = (x) -> x % 2 != 0; FG<String, Integer, Boolean> fg = (x) -> f.apply(g.apply(x)); List<String> strings = new ArrayList(); strings.add("a"); strings.add("ab"); strings.add("abc"); List<String> result = new ArrayList(); for (String s : strings) { if (fg.apply(s)) { result.add(s); } } System.out.println(result); } } 36 行,差不多是 Kotlin 的 3 倍。

2018-08-10

《Kotlin项目实战开发》第3章+类型系统与可空类型

《Kotlin项目实战开发》 第3章 类型系统与可空类型 跟Java、C和C ++ 一样, Kotlin也是“静态类型编程语言”。 通常,编程语言中的类型系统中定义了  如何将数值和表达式归为不同的类型  如何操作这些类型  这些类型之间如何互相作用 我们在编程语言中使用类型的目的是为了让编译器能够确定类型所关联的对象需要分配多少空间。 在每一个编程语言中,都有一个特定的类型系统。静态类型在编译时期时,就能可靠地发现类型错误。因此通常能增进最终程序的可靠性。 类型系统在各种语言之间有非常大的不同,主要的差异存在于编译时期的语法,以及运行时期的操作实现方式。 本章我们简单介绍一下Kotlin的类型系统。

2017-09-30
CSDN身份
  • 博客专家
勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周上午根据用户上周周三的博文发布情况由系统自动颁发。