出于好奇,为什么下面的程序
1 = 0
"hello" = "world"
Run Code Online (Sandbox Code Playgroud)
由 GHC 有效和编译?这仅仅是一个错误还是一个功能?谢谢!
无论如何要在另一个约束中应用一个约束,使得这个
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE KindSignatures #-}
module Test where
type Con a = (Num a, Show a)
type App c a b = (c a, c b)
program :: App Con a b => a -> b -> String
program a b = show a ++ " " ++ show (b+1)
Run Code Online (Sandbox Code Playgroud)
将工作?
目前 GHC 给了我以下错误:
[1 of 1] Compiling Test ( Test.hs, interpreted )
Test.hs:9:12: error:
• Expected a constraint, but ‘App Con a b’ has kind …Run Code Online (Sandbox Code Playgroud) 我正在尝试用 Haskell 编写一个简单的自动微分包。
在 Haskell 中表示类型安全(有向)计算图的有效方法是什么?我知道广告包使用“data-reify”方法,但我不太熟悉它。谁能为我提供一些见解?谢谢!
algorithm haskell functional-programming automatic-differentiation data-structures
是否可以构建结构
struct MyFn<A, B> {
call: fn(A) -> B
}
Run Code Online (Sandbox Code Playgroud)
这样它就能够捕获不可变的变量,如下面的代码片段所示?
let y: &f64 = &3.0
let my_fn: MyFn<f64, f64> {
call: |x| {
x + *y
}
}
Run Code Online (Sandbox Code Playgroud)
我知道在这种情况下需要闭包,但是 的类型应该是什么,call以便它可以捕获任何不可变的引用(例如函数引用)?