小编tho*_*ice的帖子

将文字分配给 GHC 中的术语

出于好奇,为什么下面的程序

1 = 0

"hello" = "world"
Run Code Online (Sandbox Code Playgroud)

由 GHC 有效和编译?这仅仅是一个错误还是一个功能?谢谢!

binding haskell literals variable-assignment ghc

22
推荐指数
2
解决办法
421
查看次数

在 Haskell 中的约束内应用约束

无论如何要在另一个约束中应用一个约束,使得这个

{-# 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 types functional-programming

7
推荐指数
1
解决办法
138
查看次数

用 Haskell 表示计算图

我正在尝试用 Haskell 编写一个简单的自动微分包。

在 Haskell 中表示类型安全(有向)计算图的有效方法是什么?我知道广告包使用“data-reify”方法,但我不太熟悉它。谁能为我提供一些见解?谢谢!

algorithm haskell functional-programming automatic-differentiation data-structures

3
推荐指数
1
解决办法
372
查看次数

在其函数中捕获变量的结构体

是否可以构建结构

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以便它可以捕获任何不可变的引用(例如函数引用)?

ownership rust borrow-checker

2
推荐指数
1
解决办法
355
查看次数