gpt4 book ai didi

f# - 你如何在 F# 中实现 comefrom?

转载 作者:行者123 更新时间:2023-12-05 01:15:16 26 4
gpt4 key购买 nike

我已经开始习惯implementing goto的F#方式了控制流程,但我不太确定如何处理 comefrom , 啦 INTERCAL .

comefrom 是一个非常有用的结构,它允许您从标签跳转。下面的示例程序使用它来打印完整的洗手说明:

comefrom repeat
Console.Write "Lather"
Console.Write "Rinse"
repeat

comefrom 的美妙之处在于您可以在多个地方放置一个标签。

comefrom restart
Console.Write "Do you want to restart this program?"
let a = Console.ReadLine()
match a with
| "Y" -> restart
| _ -> Console.Write "Too bad! It will restart whether you like it or not!"
restart

我尝试了这两个程序,但反复无常的 F# 编译器决定让我失望。我如何利用 F# 中的 comefrom

最佳答案

这非常接近您想要的语法。

let comefrom f = 
let rec g = (fun () -> f g)
f g

comefrom (fun restart ->
Console.Write "Do you want to restart this program?"
let a = Console.ReadLine()
match a with
| "Y" -> restart()
| _ -> Console.Write "Too bad! It will restart whether you like it or not!"
restart())

一旦你将注意力集中在一个函数 f 上,接受一个函数 g,它本身被传递给 f,它相对直截了当。

将 INTERCAL 代码迁移到 F# 很困难。这有望减少所涉及的工作。

关于f# - 你如何在 F# 中实现 comefrom?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7178385/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com