网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
02月07日漏签0天
linux吧 关注:538,457贴子:2,574,926
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 11回复贴,共1页
<<返回linux吧
>0< 加载中...

hymn - a monad library for python and hy - release 0.1

  • 只看楼主
  • 收藏

  • 回复
  • 8pm
  • ----x-w-
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
同志們,上次說的那個 monad 庫發佈了


  • 8pm
  • ----x-w-
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
測試 python 版本 2.7, 3.3, 3.4 (3.5 因爲 hy 0.11.0 不支持沒辦法)
hy 版本 0.11.0
文檔在 readthedocs
Documentation
http://hymn.readthedocs.org/
Issue Tracker
https://github.com/pyx/hymn/issues/
上傳了 cheese shop (PyPI)
https://pypi.python.org/pypi/hymn/
Mercurial/HG 源碼庫
https://bitbucket.org/pyx/hymn/
Git 源碼庫
https://github.com/pyx/hymn/


2026-02-07 10:51:35
广告
不感兴趣
开通SVIP免广告
  • 8pm
  • ----x-w-
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼


  • 8pm
  • ----x-w-
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
monad transformer api 構思中,歡迎各種意見


  • 8pm
  • ----x-w-
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
廣招建議,monad transformer 的 api 怎麼設計


  • 8pm
  • ----x-w-
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
正在寫個 lazy monad
將 lazy evaluation 用 monad 封裝
不知道是不是想多了


  • 8pm
  • ----x-w-
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
借個地方
@Clerk_Ma 我 email 你了


  • heartbleed23
  • -------x
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
太高深,看不懂


2026-02-07 10:45:35
广告
不感兴趣
开通SVIP免广告
  • 8pm
  • ----x-w-
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
0.3 發佈了
增加了 Lazy monad,將 lazy/deferred computation 實現爲 monad
利用 lift . const 加上 strict 參數求職,可以出來依賴關係
詳情請見 examples/deps.hy
代碼如下
;;; lazy monad example
(import [hymn.dsl [const force lift]])
(require hymn.dsl)
(def depends (lift (const nil)))
(defmacro deftask [n &rest actions]
`(def ~n
(depends (lazy (print "(started" '~n))
~@actions
(lazy (print " finished " '~n ")" :sep "")))))
(deftask a)
(deftask b)
(deftask c)
(deftask d)
(deftask e)
(deftask f (depends c a))
(deftask g (depends b d))
(deftask h (depends g e f))
(defmain [&rest args]
(force h))
輸出
(started h
(started g
(started b
finished b)
(started d
finished d)
finished g)
(started e
finished e)
(started f
(started c
finished c)
(started a
finished a)
finished f)
finished h)


  • 8pm
  • ----x-w-
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
我懷疑目前 CachedSequence 的實現因爲偷懶用 tee 會有 memory leak
但是又懶得找個 memory profiler 測驗一下


  • 8pm
  • ----x-w-
    10
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
0.5 了,直接從 0.4 跳上來,因爲覺得預期的實現了至少一半
增加了兩個 macro
monad-> 和 monad->>,就是給 monad 用的 threading macro 和 threading tail macro
比如
(monad-> (maybe-m.unit 99) m-inc (m-div 5) (m-div 2))
擴展後成爲
(do-monad-m [a (maybe-m.unit 99) b (m-inc a) c (m-div b 5)] (m-div c 2))
值是 Just(10.0)
(monad->> (maybe-m.unit 4) m-inc (m-div 25) (m-div 100))
擴展後成爲
(do-monad-m [a (maybe-m.unit 4) b (m-inc a) c (m-div 25 b)] (m-div 100 c))
值是 Just(20.0)
當然,爲了寫安全的 macro,中間變量名字不是 a, b, c 而是用 (gensym) 的


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 11回复贴,共1页
<<返回linux吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示