注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

jiyinyiyong

/chenyong/, 1991, dreamer, coder

 
 
 

日志

 
 
关于我

http://tiye.me

文章分类
网易考拉推荐

2011年06月29日  

2011-06-29 15:02:06|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
http://learnyouahaskell.com/chapters
中文前8章翻译在此http://fleurer-lee.com/lyah/chapters.htm
懒得看中文,stardict伺候,前天消息说...
haskell相关的笔记
haskell的texasrange以及cycle和repeat用来刷屏不错的
haskell的缩进不怎么用到,终端不能用,好像函数式几乎用不到

我以为是打乱顺序的声明等式就行了
可是我声明a=1和b=2,之后声明a+b=c却不行
一看只能把c=a+b放到顺序前面
搞不动,难道这跟复制的意思不一样吗

后来发现要写到hs文件里面才能运行
在ghci当中直接输入容易报错,为什么呢

不懂
Prelude有一个运算符$的定义如下:
infixr0$
($)::(a->b)->a->b
f$x=fx
不懂
我需要一款好的笔记

leta="a"--查看得到"a"
leta='a'--查看a得到"a"
"a"++"a"--可行
"a"++'a'--报错
lets'a=a+1--可行
lets"a=a+1--报错
['2',"333"]--报错
['2','2']--正常,疑似真的字符串长度的区别
为什么?
看到一份haskell简明语法,好像也这样子
http://zhiwei.li/text/2011/05/haskell%E7%AE%80%E6%98%8E%E8%AF%AD%E6%B3%95/

我以为是/^\s+/,结果是/^\s\+/
为什么有这么个转义?
看到教程,vim的正则上面直接这样的
http://blog.csdn.net/menghun_99520/archive/2008/06/06/2517970.aspx

http://www.haskell.org/haskellwiki/Cn/%E5......

not2<3--报错,,看样优先级理解错了

putStrLn"2"--正确
putStrLn2--报错

发现只能用enter回复了
快捷键说明一份
http://www.juyimeng.com/google-wave-shortcut.html
delete键不可用
esc基本无用,但最下面的回复成功过一次

print打印东西多了必须加()

但是为什么不能非等宽字体?
ubuntu不能装haskell整个平台,但是hugs和ghc都装了
问题是不能直接用缩进的功能,不爽<,<
好吧,,应该用等宽,,那么为什么这里不能用制表符?

我错了..都是整数,长度不同,教程有写的
好像不能强制转化类型
leta=2;a::Integer;a::Double;--Duplicatetypesignature错误
只能重新let一遍,然后设置一次没问题

gcd::(Integrala)=>a->a->a
{-这个是甚末意思?输入俩,输出单,怎么4个a?-}

--我本的还期待区分无空格有优先集的

["a","a"]--得到数组,这个地方的单引号好无聊啊

zip(1)(1)--报错
zip[1,2,3][1,2]--返回一个数组,两个元组,数字还明智,数组好

Prelude>:ta
a::(Numt1)=>t->t1
Prelude>letax=x
Prelude>:ta
a::t->t
Prelude>letax=x+1
Prelude>:ta
a::(Numa)=>a->a
Prelude>letax=x*2
Prelude>:ta
a::(Numa)=>a->a
Prelude>letaxy=1
Prelude>:ta
a::(Numt2)=>t->t1->t2
Prelude>letaxy=x
Prelude>:ta
a::t->t1->t
Prelude>letaxy=x+1
Prelude>:ta
a::(Numa)=>a->t->a
Prelude>letaxy=x+y
Prelude>:ta
a::(Numa)=>a->a->a
{-搞不懂,函数的类型究竟是什么-}

--虽然空格无所谓了,但是括号算的什么?
--既不是优先级,又不是元组,算什么?!!

开几十分钟小差去
http://code.google.com/p/ibus/issues/detail..............

{-我认为统一的理解是读取一个参数时
字数串/数字/变量/优先级部分等直接读取
而函数名则停下先取优先
这个应该是统一的规则没错吧
而fst/snd居然放在(+2)的位置
看来真的不一般-}

factorialn=n*factorial(n-1)
{-这个好特别啊
放在ghci里面输入是没有用的
朗茨都用了let,结果覆盖出错了,难道
不过分开挺有意思的-}

原来大部分未翻译,呃
找到个目录,看去里面也没翻译的不少
http://www.haskell.org/haskellwiki/Category:Chinese

[(2,0),(2,3,3)]--报错
[(2,3),(2,'2')]--报错
(2,'2')>(2,'s')--False
(2,'t')>(2,'s')--True
(2,'t')>(2,'2')--True
(2,'t')>(2,'A')--True
{-因此小写大于大写,大学大于数字
haskell的定义好怪,列表要满足完全同类-}

--感觉就像最初看到javascript面向对象不停加点号属性那样
--厉害,,在看看这个已经在用==的等号了,还是要用这个等号啊
--当时说'='单个在赋值位置不是直接运算我还以为是避开"=="了

主要还是这篇在高瞻远瞩啦
http://blog.zhaojie.me/2010/05/trends-and-future-direc......
说编程语言当前的方向是函数式编程,动态语言和并发
估计人们热也热在这里的
这系列文章之前看过,现在再看一遍感觉不同
可能lisp要先了解了才知道缘由
我也只是冲着某些神奇的东西来撞的
现在呢发现兴趣又在变调了,教程看不下

:t"a"--[Char]两者不一样啊
:t"ww"--[Char]看来单引号双引号本身就不一样

--这句s读去的是每个st里面的吧
-刚开始以为是s取整个st了,犯了错了
onlyUp::[Char]->[Char]--这句还只能写在定义函数之前
--而且居然不能用let定义,无聊了

又看到"/=",岂止是别扭啊,还有haskell不会有"a+=1"的写法
另外发现个无聊的natty的ghci输入中文之后,,退格..
Ord的GT,LT,EQ蛮古老的看去,不晓得是否有特殊厉害?

Prelude>:t[1..4]
[1..4]::(Numt,Enumt)=>[t]
这句挺有意思

ghci>:t(*)
(*)::(Numa)=>a->a->a

(Numa)u始终是类型约束没变过
这样上面提到过的问题也可以理解了

letlucky7="lucky"
letluckyx="no"--只有后面依据可行,被覆盖了吧
之后用了letlucky7="luck";luckyx="no"--可行

sayMe::(Integral a)=>a->String
sayMe 1="one"
sayMe 2="teo"
sayMe x="something else"
sayMe 3="three"
发现最后一行3的情况被抹去
  评论这张
 
阅读(142)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017