[今天生日]造了个编译到 JavaScript 的语言取名叫做 Smooth

2016-05-24 23:04:50 +08:00
 bramblex

Github 传送门:https://github.com/bramblex/Smooth

线上试用:http://bramblex.github.io/Smooth/

特点:

利用 do..with 语法糖轻松解决异步问题。

# 异步的 delay 函数
delay = `(ms)=>(f)=>setTimeout(()=>f(ms),ms)`

# 将一个普通的函数封装成异步函数
mkasync = `(job)=>(f)=>{job();f()}`

# 将多个异步函数串联到一起
async f g = f g

# 以同步的方式写异步,每隔一秒依次输出 "hello" "world" "smooth"
asyncJob = with async do
     delay 1000
     mkasync \_-> print $ "hello"
     delay 2000
     mkasync \_-> print "world"  
     n <- delay 3000 # 还可以取得异步函数的数据
     mkasync \_-> print $ "smooth " + n 
     
main _ = asyncJob \_ -> print "done"

可以自定义运算符

# 定义 `+` 符号
infixl 4 + add
add = `(x)=>(y)=>x+y`

# 定义 `<` 符号
infixl 6 < lt
lt = `(x)=>(y)=>x<y`

# 定义 `$` 符号,用来消除括号
infixr 0 $ app
app f x = f x

函数式和指令式混用

# 定义 `+` 符号
infixl 4 + add
add = `(x)=>(y)=>x+y`

# 定义 `<` 符号
infixl 6 < lt
lt = `(x)=>(y)=>x<y`

impFunc n =
    let result = 0
    let i = 0
    while i < n
    	result = result + i
        i = i + 1
    	
decFunc n = if n < 0 then 0 else n + decFunc n
6157 次点击
所在节点    JavaScript
72 条回复
sdenvi
2016-05-25 13:40:24 +08:00
生日快乐
timhal
2016-05-25 13:48:52 +08:00
啊 我明天呢╮( ̄⊿ ̄")╭被你抢先一步
Lothar
2016-05-25 13:52:27 +08:00
没写过 haskell 的表示看起来真要命 😂 (生快
superxzr
2016-05-25 13:55:48 +08:00
大触生快
gamexg
2016-05-25 14:15:14 +08:00
生日快乐
timeship
2016-05-25 14:20:25 +08:00
生日快乐么么哒,感觉认识好久了
bramblex
2016-05-25 14:36:36 +08:00
@timhal 那预祝明天生日快乐哈~ OwO~
bramblex
2016-05-25 14:37:04 +08:00
@Lothar 只是语法像 haskell 因为我懒~
bramblex
2016-05-25 14:37:28 +08:00
@superxzr 谢谢~
wsph123
2016-05-25 14:39:08 +08:00
生日快乐!
bramblex
2016-05-25 14:39:20 +08:00
@timeship /w\ 哈哈哈~
narrowei
2016-05-25 14:40:13 +08:00
╮(╯▽╰)╭生日快乐🎂
SCaffrey
2016-05-25 16:29:26 +08:00
生日快乐\^O^/
Exin
2016-05-25 16:34:41 +08:00
又是个做编译器的大神
timeback
2016-05-25 16:49:01 +08:00
好吧,不认识,一样恭祝:生日快乐!!!🎂🎂🎂
ProfFan
2016-05-25 16:54:54 +08:00
@Exin purescript
jamesarch
2016-05-25 16:58:12 +08:00
生日快乐
zqhong
2016-05-25 17:55:47 +08:00
生日快乐🎉🎉🎉! Star 一个先! ヽ(́◕◞౪◟◕‵)ノ
bramblex
2016-05-25 18:30:04 +08:00
@narrowei
@timeback
@zqhong

谢谢大家~
bramblex
2016-05-25 18:30:43 +08:00
@ProfFan

哎呦 /w\
居然有人认识 PureScript ~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/281036

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX