小编Rao*_*ter的帖子

真实世界使用GADT

如何使用广义代数数据类型?

haskell wikibook中给出的示例太短,无法让我了解GADT的真正可能性.

haskell gadt

43
推荐指数
3
解决办法
7445
查看次数

在.NET中调用Haskell函数

我想使用具有以下类型的Haskell函数:: string -> string来自C#程序.

我想用hs-dotnet来桥接两个世界.作者声称这是可能的,但没有提供此案例的样本.提供的唯一示例是使用Haskell的.NET的示例.

是否有此用途的样本,或如何使用它?(我在桥接组件上使用了.NET Reflector,但我不明白.)

.net interop haskell ffi

14
推荐指数
1
解决办法
3351
查看次数

如何创建未装箱的可变数组实例

假设我有以下类型:

data MyType = Constructor0 | Constructor1 | Constructor2
            deriving (Eq,Show,Enum)

MArray (STUArray s) MyType (ST s)
MArray IOUarray MyType IO

目前我将所有内容存储为Word8,然后使用(包装)fromEnum/toEnum进行转换,但感觉不对.我需要严格和拆箱,因为我在内存中使用大型数据结构(> 1.2Go),我无法懒得加载它.如果我找不到任何解决方案,我将重新实现C++中的所有内容,我希望避免使用当前项目.

我已经问了#haskell的问题,但我没有得到回复,也许这不是当天的好时机.

haskell marray stuarray

10
推荐指数
1
解决办法
1549
查看次数

用于闭包编译器的Regexp类型

我目前正在为个人javascript模块添加类型注释,但是当我尝试键入函数时,我正在考虑将regexp作为参数,但以下尝试都没有工作:

/** @type {function(RegExp)} */
/** @type {function(regex)} */
Run Code Online (Sandbox Code Playgroud)

我只是得到:

WARNING - Bad type annotation. Unknown type regexp
Run Code Online (Sandbox Code Playgroud)

我应该在声明中使用什么类型?谢谢.

javascript regex types google-closure-compiler jsdoc

9
推荐指数
1
解决办法
2903
查看次数

使用第一类模块索引集合

假设我想索引集合的所有元素并将此索引存储在地图中。一个可行的解决方案是扩展 Set 模块并创建一个内部函子:

module Make(M : Set.S) = struct
  include M

  module MakeIndexer(MM : Map.S with type key = elt) = struct
    let index_set set =
      let aux el (ix, acc) =
        (ix + 1, MM.add el ix acc)
      in
      M.fold aux set (0, MM.empty) |> snd
  end
end
Run Code Online (Sandbox Code Playgroud)

现在,内部函子的使用有点麻烦,我想使用使用一流模块的实现。到目前为止,我得到了以下信息:

module Make(M : Set.S) = struct
  include M

  let index_map (module MM : Map.S with type key = elt) set =
    let aux el (ix, acc) =
      (ix + 1, …
Run Code Online (Sandbox Code Playgroud)

ocaml

5
推荐指数
1
解决办法
81
查看次数