#Hello Edgerunners, welcome to the Night-City.

Welcome!

Haskell Primer 008: 类型类

在 Haskell 中,类型类 (typeclass) 是定义类型行为的接口,如果一个类型是某类型类的实例 (Instance),那么它一定实现了该类型类所描述的行为。 这里需要注意,不要将 Haskell 中的类型类与一般面向对象语言中的类 (Class) 混淆。 举例说明,前面已经多次用到了相等性判断 == 函数,现在我们来看看它的类型: Haskell> :t (==) (==) :: Eq a => a -> a -> Bool Haskell> 这里出现一个新的事物 —— 符号 =>,它被用作类型约束 (Type Constraint),即...

Haskell Primer 007: 类型初识

有了前面一些基础介绍,现在我们开始介绍 Haskell 中关于类型的各种知识。 由于 Haskell 支持类型推导 (Type Inference),允许我们不对类型进行显示声明,但对于初学者,有时我们可能依旧需要类型检查来帮助我们理解和学习。在 GHCi 中,可以使用 :t 表达式 命令来检查类型: Haskell> :t 'a' 'a' :: Char Haskell> :t True True :: Bool Haskell> :t (1, 'a') (1, 'a') :: Num t => (t, ...

Haskell Primer 006: 模式匹配

模式匹配主要用来定义一些数据必须遵循的规则,根据他们来解析数据。 例如: sevencheck :: Integer -> Bool sevencheck 7 = True sevencheck x = False head' [x] = x head' [] = "error" head' (x:_) x 你也可以对数据进行引用,可以添加 引用名称@: firstletter :: String -> String firstletter "" = "empty" firstletter a...

Haskell Primer 005: 认识元组

学习了列表之后,我们再来认识一下元组 (Tuple)。 什么是元组 学习过 C++ 的朋友应该对这个词不陌生,元组允许我们将多个不同类型的值组合为一个单一值。元组与列表有些类似,但元组含有的内容可以是多种类型的,此外,元组的长度是固定的,将元素存入元组时就需明确这一点。 Haskell> (1,2) (1,2) Haskell> (2, 'a', "hello", 3.14) (2,'a',"hello",3.14) Haskell> 上面这样的数据都是元组,他们是使用圆括号 ((、)) 包含的一组元...

Haskell Primer 004: 玩玩列表

列表 (List),是一种单类型 (Homogeneous) 数据结构,用于存储一个或多个同类型元素,例如一系列的数字。 将一系列的元素使用方括号 ([]) 包含,元素间使用逗号 (,) 分隔,就形成了列表。列表允许嵌套。 Haskell> let aList = [1,2,3,4,5,435,213,546,34,54345] Haskell> aList [1,2,3,4,5,435,213,546,34,54345] Haskell> 此处的 let 被用于在 GHCi 中定义常量,let a = 0 与先在 .hs 文件中写入 a = 0 后通过 :l 加载的效果...

Haskell Primer 003: 函数定义

尝试了一些函数调用之后,紧接着了解一下函数的定义,这与调用的形式类似,只是多了函数行为的定义: 函数名 参数1 参数2 参数3 参数4 ... = 函数行为 例如: doubleIt x = x * 2 doubleThem x y = (x + y) * 2 将这两个函数定义语句保存在一个 .hs 文件中,例如 /Users/Meniny/func.hs。 然后将终端工作目录切换到 (cd) 该目录,进入 GHCi 并执行 :l func 命令: Haskell> :l func [1 of 1] Compiling Main ( func.hs, in...

OS X: How to get the path of Home directory

We all know that NSHomeDirectory() is retuning the sandbox root (not the home directory), [@"~" stringByExpandingTildeInPath] is doing the same thing. This /Users/username/Library/Containers/appID/Data is what's being returned. The only thing its really good for is setting a sane default to the fil...

Haskell Primer 002: 函数初探

通过上一篇我们简单尝试了 Haskell 语言,也许你没有察觉,其实我们自始至终都在使用着函数。 前面我们使用的运算符 +、-、*、/ 其实都是函数,像这样置于两个参数之间调用的函数,称为中缀函数 (Infix Function)。类似的还有前缀函数 (Prefix Function),通过函数名后空格并接以参数列表的形式调用,其中参数列表也以空格分隔。 Haskell> succ 1 2 Haskell> min 100 200 100 Haskell> max 20 99 99 Haskell> 其中 succ 表示获取后继,一个整数的后继,就是比它大 1 的下...

OS X: launchd

I would like to create a service to execute a task automatically, and starting and stopping it on demand. In Windows, it is possible to create an application that can be installed as a service (Windows Service). So what would be the equivalent of services on Mac OS X? How are they implemented and wh...

Haskell Primer 001: 尝鲜

关于什么是 Haskell 以及为什么要选择 Haskell 的问题就不再讨论了。本文主要介绍学习 Haskell 要准备的工作。 请知悉: 这个系列的博客只是 Haskell 的基础知识,写给准备了解和学习 Haskell 的初学者。对于某些知识点,深入的内容可能会在后续的文章中出现,但太复杂的问题不在这些博客的范围之内。 编辑器 编辑器你可以选择自己喜欢的任何工具,值得推荐的依然是 Atom。 记得在 Install 中搜索和安装必要的语言插件。 编译器 本系列教程中将会使用比较流行的 GHC(Glasgow Haskell Compiler),它的安装也很简单,你只需要下载 Haskel...

Kotlin : Introduction

Kotlin 是由 JetBrains 开发的基于 JVM 的新编程语言,在 Apache 许可下开源发布已经过去一段时间了,所以写篇博客简单介绍下。 说到 JetBrains 相信大家都不陌生,PyCharm、RubyMine、IntelliJ、CLion、Android Studio、PhpStorm、WebStorm 这些作品都是出自 JetBrains 之手。 网络上有不少将 Kotlin 和 Java、Scala 对比的文章,Kotlin 的宗旨是提供一个更好的 Java,而不是重建整个平台,虽然目前来说 Scala 也许要比 Kotlin 强大一些。 Kotlin 的出现,为我们带...

Kotlin : Syntax

前面对 Kotlin 的情况做了简单介绍,这一篇再来说说它的基本语法。 分号 首先可喜可贺的是,Kotlin 中语句末尾并不需要分号结尾。 基本类型 Kotlin 中的基本数据类型有: 类型位宽 Double 64 Float32 Long64 Int32 Short16 Byte8 位操作符 用于 Int 和 Long 类型的位操作符: shl(bits) : Java << shr(bits) : Java >> ushr(bits) : Java >>> and(bits) : 位与 or(bits) : 位或 xo...

What's this?

The Night-City version of Hotodogo inspired by Cyberpunk 2077. Not finished yet.

Pinned Message

The Founder and CEO of Infeca Technology.

Developer, Designer, Blogger.

Big fan of Apple, Love of colour.

Feel free to contact me.

反曲点科技创始人和首席执行官。

开发、设计与写作皆为所长。

热爱苹果、钟情色彩。

随时恭候 垂询

Outer Square Inner Square