Idris-JS递归类型

时间:2019-06-03 14:18:05

标签: idris

我正在尝试将“信号功能” (Yampa style)从Idris导出到JS。

要做到这一点,我需要一个行为像signal: i -> (signal, o)的东西,方法是接受输入i并产生输出o及其下一个版本。此定义是递归的。

我有一个data这样的定义;


> data SF : Type -> Type -> Type where
>   Flat : (i -> o) -> SF i o
>   Bump : (i -> (SF i o, o)) -> SF i o
>
> react: SF i o -> i -> (SF i o, o)

...的基本前提是signal i o = i -> (signal i o, o)

我想用输入i调用我的信号函数,并产生输出o和信号函数的下一个版本。

但是

我无法提出可用于传递给FFI的类型签名。 我不可避免地在两边都需要signal i o,并且foreign FFI_JS ...调用似乎是递归地评估递归类型。

如果我可以通过data通话通过foreign FFI_JS ...,那么我会好的,但是,我不能。

如果foreign函数生成器可以处理递归类型,那我很好,但事实并非如此。

我一直认为必须采取其他解决办法-在那里吗?

0 个答案:

没有答案