[今天生日]造了个编译到 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
5889 次点击
所在节点    JavaScript
72 条回复
southwolf
2016-05-24 23:09:09 +08:00
生日快乐!
bramblex
2016-05-24 23:10:30 +08:00
@southwolf 谢谢 /w\
Slienc7
2016-05-24 23:18:54 +08:00
🎉生日快乐🎉
lichun
2016-05-24 23:24:47 +08:00
happy birthday
shyling
2016-05-24 23:28:35 +08:00
`我不是 js`
bramblex
2016-05-24 23:33:44 +08:00
@shyling

主要方便和 js 之间互操作 /w\
bramblex
2016-05-24 23:34:09 +08:00
@Slienc7
@lichun

谢谢 ~ OwO ~
ctsed
2016-05-24 23:46:59 +08:00
明年就可以一起过生日了
mactaew
2016-05-24 23:50:04 +08:00
黑皮波斯忒
zzNucker
2016-05-25 00:10:25 +08:00
迟到的生快~!
aprikyblue
2016-05-25 00:26:50 +08:00
快生
upczww
2016-05-25 00:29:36 +08:00
膜拜大神,生日快乐,好像晚了
justjavac
2016-05-25 00:52:17 +08:00
生日快乐\^O^/
4679kun
2016-05-25 00:55:07 +08:00
迟到的生快(=゚ω゚)=
msg7086
2016-05-25 01:25:41 +08:00
这位姐姐生快~
hewigovens
2016-05-25 07:20:13 +08:00
github 上的 readme 发现一处错别字,“其本质就是一个简单的 CPS 变幻” 应为 “变换”?
xiamx
2016-05-25 07:26:24 +08:00
生日快乐!
linux40
2016-05-25 07:52:22 +08:00
完成之后马上弃坑么。。。
bramblex
2016-05-25 08:22:50 +08:00
@hewigovens 对… cps 变换,输入法的锅
bramblex
2016-05-25 08:23:56 +08:00
@linux40 不准备弃坑…我是准备拿这东西实用的…模块系统和类型系统还没加上去

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

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

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

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

© 2021 V2EX