有没有办法在 lambda 演算中模拟异常处理?
我问这个问题是因为在过程语言和派生范例中处理异常状态的多种方法是很常见的。setjmp.h
即使在 C 语言中,您也可以使用,errno.h
和 来非常简单地模拟这种行为signal.h
。
我可以在脑海中想象图灵机状态图中的一种方式,一种可以被任何其他节点访问的“异常”节点,并且我猜过程语言会做这种事情来实现它。
但在 Haskell(我最新的痴迷)和一般的函数式编程中,你看不到关于异常的所有模糊之处。我知道它们存在(Control.Exception
?)并且我知道函数式编程使用 monad 来模拟副作用,但我承认我不太明白它是什么以及它是如何工作的。
但我在另一次讨论中看到,所有函数式语言都是 lambda 演算的语法糖,那么这样的东西如何工作呢?
theory haskell functional-programming exception lambda-calculus
fromRational
我知道和fromInteger
的存在fromIntegral
。
但是是否有更通用的函数可以将 any 转换Num
为该Double
类型?
我还知道这Num
是一组类型,并且可能存在使用方式的限制。
但这可能吗?
就像是:
fromNum::(Num a) => a -> Double
Run Code Online (Sandbox Code Playgroud)
最好不要安装任何额外的软件包。
我在启用的 WSL2 Ubuntu 22.04 上使用 mambaforge systemd
。我尝试使用以下命令安装启用了 CUDA 的 TensorFlow 2.10:
mamba install tensorflow\n
Run Code Online (Sandbox Code Playgroud)\nWSL2 的命令nvidia-smi -q
给出:
==============NVSMI LOG==============\n\nTimestamp : Sat Dec 17 23:22:43 2022\nDriver Version : 527.56\nCUDA Version : 12.0\n\nAttached GPUs : 1\nGPU 00000000:01:00.0\n Product Name : NVIDIA GeForce RTX 3070 Laptop GPU\n Product Brand : GeForce\n Product Architecture : Ampere\n Display Mode : Disabled\n Display Active : Disabled\n Persistence Mode : Enabled\n MIG Mode\n Current : N/A\n Pending : N/A\n Accounting Mode …
Run Code Online (Sandbox Code Playgroud) haskell ×2
conda ×1
exception ×1
ghc ×1
mamba ×1
mambaforge ×1
python ×1
tensorflow ×1
theory ×1