V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  zhuangzhuang1988  ›  全部回复第 50 页 / 共 110 页
回复总数  2182
1 ... 46  47  48  49  50  51  52  53  54  55 ... 110  
2020-01-09 15:22:18 +08:00
回复了 FaiChou 创建的主题 程序员 你们认为函数式编程语言未来可期吗?
// Inspired by http://www.cs.utexas.edu/~wcook/Drafts/2006/MemoMixins.pdf

// State Monad combined with Continuation Monad (StateT Monad transformer)
type StateContMonad<'s, 'a, 'r> = StateContMonad of ('s -> ('s -> 'a -> 'r) -> 'r)

// Computation Builder
type StateContBuilder() =
member self.Return value =
StateContMonad (fun state k -> k state value)
member self.Bind(StateContMonad contStateMonad, f) =
StateContMonad (fun state k ->
contStateMonad state (fun state' value ->
let (StateContMonad contMonad') = f value
contMonad' state' k))
member self.Delay( f : unit -> StateContMonad<'s, 'a, 'r> ) =
StateContMonad (fun state k ->
let (StateContMonad contStateMonad) = f ()
contStateMonad state k)

let memo = new StateContBuilder()

// Tell me Y
let rec Y f v = f (Y f) v

// Map functions
let check (value : 'a) : StateContMonad<Map<'a, 'r>, option<'r>, 'r> =
StateContMonad (fun map k -> k map (Map.tryFind value map))

let store (argument : 'a, result : 'r) : StateContMonad<Map<'a, 'r>, unit, 'r> =
StateContMonad (fun map k -> k (Map.add argument result map) ())

// Memoization Mixin
let memoize f argument =
memo {
let! checkResult = check argument
match checkResult with
| Some result -> return result
| None ->
let! result = f argument
do! store (argument, result)
return result
}


let execute f n =
let (StateContMonad contStateMonad) = Y (memoize << f) n
contStateMonad Map.empty (fun _ value -> value)

// Example
let big (value : int) = new System.Numerics.BigInteger(value)

let fib f n =
if n = big 0 then memo { return big 0 }
elif n = big 1 then memo { return big 1 }
else
memo {
let! nMinus1Fib = f (n - big 1)
let! nMinus2Fib = f (n - big 2)
return nMinus1Fib + nMinus2Fib
}

execute fib (big 100000)

弟兄们 来学习吧
2020-01-08 13:51:49 +08:00
回复了 Renco 创建的主题 程序员 上午水贴,睡傻了忘记带鼠标,获得了生产效率-50%的 debuff
@17681880207 大侠你牛.
2020-01-08 00:15:23 +08:00
回复了 djyde 创建的主题 程序员 从「后端现在已经看不懂前端了」说起
@avastms 哈哈, 不鼓吹会点 fp 的基础用法, 咋体现优越性
2020-01-07 21:41:58 +08:00
回复了 xkxy 创建的主题 问与答 各位大佬,平时都做些什么来提升自己的生活质量呢?
红烧肉
是不是编译的 debug 版本?
2020-01-04 19:44:41 +08:00
回复了 miaeLKK 创建的主题 问与答 程序员们都用什么中文输入法??
win10 自带的
别的花里胡哨的不需要.
2019-12-30 13:20:35 +08:00
回复了 pythonee 创建的主题 程序员 如果你不干程序员,你会做什么来养活自己?
造原子弹.
2019-12-29 19:43:05 +08:00
回复了 uxff 创建的主题 程序员 CTO 拒绝 golang,坚持 PHP , v 友怎么看
除了问题谁负责 听谁的.
2019-12-29 12:45:29 +08:00
回复了 GenialX2 创建的主题 程序员 2019 年最后再发一次算法微信群,有兴趣加我微信拉群哦~
@forgottencoast 哈哈哈,正解.
2019-12-28 10:49:40 +08:00
回复了 fyxtc 创建的主题 程序员 各位,你觉得你合群吗
完了 被老罗洗脑了
2019-12-26 12:33:46 +08:00
回复了 glacial 创建的主题 Apple 15 年 win 党使用 MacBook Pro 16 一个月感受
https://www.zhihu.com/question/26911086/answer/917601211
这里也有个评论,
甲之蜜糖, 乙之砒霜
我也很早买了,用了一周实在不舒服就退了.
不要看别人咋说 V2EX 逼乎吹 mac 的太多了, 毕竟冷暖自知.
2019-12-25 12:45:42 +08:00
回复了 litp 创建的主题 Python Python Web 开发, PyCharm 还是 VScode 或者其他? macOS 平台
试试, 又不花钱,
而且"汝之蜜糖,乙之砒霜"
下面介绍的又不一定适合自己.
2019-12-23 17:16:17 +08:00
回复了 aoscici2000 创建的主题 Python 关于使用协程的一点疑问
intel 小电脑.
好好学 c/c++ 算法
别的都是虚的
2019-12-22 14:26:16 +08:00
回复了 jzjjzj 创建的主题 程序员 非科班 程序员 靠谱出路是什么?
提升技术, 别的都是虚的
2019-12-22 11:57:32 +08:00
回复了 515576745 创建的主题 程序员 目前只有有道云才能符合我的笔记需求吗?
月经贴
2019-12-21 12:45:12 +08:00
回复了 island205 创建的主题 程序员 离职笔记本外观磨损赔偿 2084.72,为什么我觉得值?
强行 值.
1 ... 46  47  48  49  50  51  52  53  54  55 ... 110  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5391 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 51ms · UTC 05:49 · PVG 13:49 · LAX 21:49 · JFK 00:49
Developed with CodeLauncher
♥ Do have faith in what you're doing.