内容简介:Swift是一门多泛式语言,而且参考了很多其它语言的实现,所以总能在不同语言里看到一些Swift的影子。前段时间看到一篇文章,Swift is like Scala,里面做了Swift和Scala一些语法的对比,有些代码块语法上是很像的。最近又看到了这儿只是列出两门语言一些类似的点,或语法,或概念上的。但在真正使用的时候,差别还是巨大的。如果想了解真正的工程中,Haskell的使用,可以参考下
Swift是一门多泛式语言,而且参考了很多其它语言的实现,所以总能在不同语言里看到一些Swift的影子。
前段时间看到一篇文章,Swift is like Scala,里面做了Swift和Scala一些语法的对比,有些代码块语法上是很像的。最近又看到了 Swift is like Kotlin , Swift is like Go 。感觉这些挺有趣的,最近刚好有了解一点Haskell,所以就有了这个想法来对比下相似点。
这儿只是列出两门语言一些类似的点,或语法,或概念上的。但在真正使用的时候,差别还是巨大的。如果想了解真正的工程中,Haskell的使用,可以参考下 Github Haskell Star排名 等
对比
Hello World
Swift
print("Hello, world!")
Haskell
putStrLn "hello, world!"
变量定义
Swift
let a = 1 var m = 2
Haskell
-- haskell中没有var定义,只能定义不可修改的变量 let a = 1
显示指定类型
Swift
let a: Float = 5
Haskell
let a = 5 :: Float
字符串连接
Swift
let ret = "111" + "222"
Haskell
let ret = "111" ++ "222"
数组定义
Swift
let lst = ["1", "2", "3"]
Haskell
let lst = ["1", "2", "3"]
区间
Swift
let lst = [1 ... 5]
Haskell
let lst = [1 .. 5] -- [1, 2, 3, 4, 5]
函数定义
Swift
func myAdd(_ a: Int, _ b: Int) -> Int { return a + b }
Haskell
myAdd a b = a + b
泛型函数
Swift
func myAdd<T: Numeric>(_ a: T, _ b: T) -> T { return a + b }
Haskell
myAdd a b = a + b
返回元组
Swift
func process(_ a: Int, _ b: Int) -> (Int, Int) {
return (a + b, a * b)
}
Haskell
process a b = (a + b, a * b)
操作符另外的调用方式
Swift
(+)(1, 2) // 输出3
Haskell
(+) 1 2
自定义操作符
Swift
infix operator <^> : AdditionPrecedence
func <^>(lhs: Int, rhs: Int) -> Int { return lhs + rhs }
5 <^> 6 // 11
Haskell
(<^>) :: Int -> Int -> Int a <^> b = a + b 5 <^> 6 -- 11
Map
Swift
[1, 2, 3].map { $0 * 2} // [2, 4, 6]
Haskell
map (*2) [1, 2, 3] -- [2, 4, 6]
数据类型
Swift
public struct CGPoint {
public var x: CGFloat
public var y: CGFloat
}
Haskell
data Point = Point Double Double
deriving (Show)
枚举类型
Swift
enum Shape {
case circle(CGPoint, CGFloat)
case rectangle(CGPoint, CGFloat, CGFloat)
}
Haskell
data Shape = Circle Point Double
| Rectangle Point Double Double
deriving (Show)
模式匹配
Swift
let e = Shape.circle(CGPoint(x: 0, y: 0), 100)
switch e {
case let .circle(pt, _):
// code
case let .rectangle(pt, _, _):
// code
}
Haskell
shapeInfo :: Shape -> String shapeInfo (Circle pt _) = "Circle point" ++ show pt shapeInfo (Rectangle pt _ _) = "Rectangle point" ++ show pt
以上所述就是小编给大家介绍的《Swift is like Haskell》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
汇编语言(第2版)
王爽 / 清华大学出版社 / 2008-4 / 33.00元
《汇编语言(第2版)》是各种CPU提供的机器指令的助记符的集合,人们可以用汇编语言直接控制硬件系统进行工作。汇编语言是很多相关课程(如数据结构、操作系统、微机原理等)的重要基础。为了更好地引导、帮助读者学习汇编语言,作者以循序渐进的思想精心创作了《汇编语言(第2版)》。《汇编语言(第2版)》具有如下特点:采用了全新的结构对课程的内容进行组织,对知识进行最小化分割,为读者构造了循序渐进的学习线索;在......一起来看看 《汇编语言(第2版)》 这本书的介绍吧!