erlang的优秀之处

erlang是我见过的最简洁和实用以及符合直觉的语言。
现在,我大略的总结一下。

1,模式匹配
模式匹配是erlang的基础,在用erlang的时候,必须得时时在脑中有匹配的概念。
赋值,分支,函数,提取都要用。
变量的一次性赋值也是在这个概念下的。

2,基本的数据类型
number<atom<reference<fun<port<pid<tuple<list<binary
一共9种,上边我是默写的,无觉得应该把这些东西背下来。
我发现,我背下来的东西越多,我就越觉得erlang越少,越简洁。

3,语句
if
pattern ->
pattern ->
end

case something of
pattern ->
pattern ->
end

try something of
pattern ->
pattern ->
catch
pattern ->
pattern ->
after
something
end

begin
something,
something
end

receive
pattern ->
pattern ->
end

上边这些就差不多了。
事实上,从函数式的观点上看,可以根本就不需要什么语句块神什么的,这些语句都可以以函数的方式来实现。当然,如果那样的话,你使用的时候也要用函数调用的方式,那就不美了。
而erlang这样,不多不少的几个语句,刚刚好。

上边的三点就是erlang的基础了,注意啊,我也是初学,别追究太多。


剩下的就是一些细节。
1,list
list的重要性,我想学过点lisp的都有数,所以,我不想多说了。因为我还得学呢。
2,函数引用和高阶函数
这个最重要了,必须得搞清楚fun这个东西,搞不清楚可就不fun了。
函数式程序设计之所以能行,也就是因为这个了。
3,bif
也就是内建函数了,要不怎么说erlang优雅呢,简单的几个语法,加上几个内建的函数接口,你可以想象用c实现这些函数应该是多么的明了。
erlang环境虚拟机的概念非常的清晰。
4,异常
三类,throw,exit,error,记住这个就差不多行了。
常用的是throw;exit是进程退出时用的;error是系统的内部不可预测的错误。
5,进程和并发
我们可以看到,pid作为数据类型存在了。
而erlang的多进程合作是用几个内建函数实现的,基本上,spawn,send,receive。
至于link什么的,也差不多吧,我也还不太明确。也就是多记住几个函数的问题。
6,otp
基本上不懂,我搞不清楚它是用模板替换的方式,还是用函数调用的方法搞的。
不过,即使用的时候也不必知道它是怎么做的,直接用就行了。
我有总想刨根问底的恶习。
7,宏
就是替换了。
8,尾递归
函数式嘛,不可避免的。
所以,必须的想法习惯。
我还有障碍。

大致差不多了。
我今天写这些不过是想坚定一下我的信心。
而且这些东西也可以在某些时候,我会查查看看,因为我会忘的。
=========================================================
9,并发,错误处理,分布式
并发——进程
错误处理——link,退出信号,系统进程
分布式——node

10,断言和断言序列
fun(X) when somesthing ->
这种函数的定义,加强了模式匹配的功能,这种对模式匹配的加强是非常必要的,不能没有的。而且,这种断言可以是很多个,且有and和or的组合。我原来也觉得光模式匹配确实是有毛病,只是不知道在哪里,现在的when断言,刚好弥补了模式匹配的不足。我也不知道是不是弥补好了,感觉好像差不多了。但是,什么地方有when这样的guard呢?基本上,除了if都可以加。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值