Haskell 中generatorconfig使用 是什么意思,怎么使用

在 SegmentFault,解决技术问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
一线的工程师、著名开源项目的作者们,都在这里:
获取验证码
已有账号?
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
看到一个 Scheme 的实现, 用了 delay 这个函数...
但是底层, 比如说编译到 IR 或者汇编, 这种功能怎样实现?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
惰性计算(Lazy Evaluation)是haskell的一大特点之一。无限列表也是Lazy Evaluation的一种表现。它的底层实现感觉上没那么重要吧。了解概念就OK了,反正它很快,O(1)的时间复杂度、空间复杂度。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
惰性求值的底层其实是借助了thunk。粗浅的解释就是一个求值用的函数和它的自由变量环境的结合。每一个表达式在其值被需要之前,总是先存储为一个thunk,一旦其值必须要被求解出来,就强迫执行求值过程。比如说,如果有这样的列表:
list :: [Integer]
list = [1..]
它首先会被实现为对系统函数enumFrom的调用,调用的结果类似这样:
enumFrom :: Integer -& [Integer]
enumFrom n = n : enumFrom (n + 1)
list = enumFrom 1
= 1 : enumFrom 2
= 1 : 2 : enumFrom 3
= 1 : 2 : 3 : enumFrom 4
-- on and on ...
其中每个enumFrom的调用都会被实现为一个thunk。我们以take 5 list为例。take函数用(:)进行模式匹配,类似于:
take :: Int -& [a] -& [a]
take 0 _ = []
take n (x:xs) = x : take (n-1) xs
take _ _ = error "Invalid call of take."
需要对列表进行模式匹配时,将要求从thunk中匹配一个(:)运算符(构造器),这时thunk求值一层,从list展开成1 : thunk2,模式匹配成功,取出了1。take函数会要求进一步匹配,新thunk(即thunk2)也会被求值,又产生新的thunk。当thunk中的值不再需要时,就不会进一步求值了。这样,无穷的求解步骤就被拆分开来,总是用一个thunk来表达无穷的部分,就不会耗尽内存了。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
delay不是一个函数,而是一个宏(macro),它的具体实现,可以看一下R5RS标准后面的附录,记得是有delay的实现的
scheme(define-syntax mydelay
(syntax-rules (define)
((mydelay (define expr ...))
(error "can't delay define -- macro mydelay"))
((mydelay expr ...)
(cons 'promise (lambda () (begin expr ...))))))
(define-syntax myforce
(syntax-rules ()
((myforce delayed-expr)
(if (and (pair? delayed-expr) (eq? 'promise (car delayed-expr)))
((cdr delayed-expr))
(error "not a promise")))))
我写的一个很简陋的实现,就是把一个表达式用一个函数封装一下……
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
丢链接跑 其实大意就是在Haskell这种Immutable语言里一个lazy的值a和一个() -& a函数等价
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:1533被浏览125369分享邀请回答22822 条评论分享收藏感谢收起11710 条评论分享收藏感谢收起查看更多回答Recent site activityedited by Sigbjorn Finneattachment from Sigbjorn Finneedited by Sigbjorn Finneedited by Sigbjorn Finneedited by Sigbjorn Finne
Some of the recent packages and libraries I've worked on and might be of interest:
- a general
binding for H some
instructions for getting started.
- next generation HTTP. ByteString friendly.
- Microsoft COM + Automation library for Haskell. Some
- Windows Installer (MSI) generator framework.
- A pragmatic .NET interop framework for Haskell.All BSD licensed and
offering functionality that might prove useful to other Haskell developers, web focused or not.More to follow...but if you have questions
on using the code please get in touch--sigbjorn finne &&
Subpages (1):
? (37k)Sigbjorn Finne, Nov 11,}

我要回帖

更多关于 mybatisgenerator使用 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信