【发布时间】:2018-11-28 09:52:22
【问题描述】:
我正在使用描述数字电路 (Lava) 的 Haskell 库,它的函数输入和输出是信号类型 (Signal Bool, Signal Int) ,据我所知,没有一个函数可以从Signal Int to Int,我知道有几种算术运算可以与 Signal Int 类型一起使用,但并非所有算术运算都是可能的。我编写了这个函数,假设从 Signal Int 转换为 Int (仅用于我需要的值)。
signalInt2int :: Signal Int -> Int
signalInt2int x = case x of
0 -> 0
1 -> 1
15 -> 15
_ -> 1000
只是为了尝试,我只写了这 4 种可能性,问题是每当我调用这个函数时,无论输入是什么,输出总是 1000。我确保使用 Signal Int 类型的输入。这是我得到的。
谁能指出问题出在哪里?我会很感激你的帮助。
【问题讨论】:
-
您的输入
x将永远不会匹配0或1或15因为x是一个列表而不是一个数字,所以你正在匹配_它返回 @987654332 @。其实我认为它不应该编译? -
您应该提供一个指向您的
Signal定义的指针。不可能知道它是什么。如果我不得不猜测,信号是取决于时间的值(例如振荡信号),因此我们无法将其转换为单个值。我们能做的最好的事情就是在一个点对信号进行采样,但这并不有趣。通常F Int和Int之间没有转换,对于通用F。例如。我们无法将[Int]转换为Int,或将Maybe Int转换为Int。 -
@chi 问题中给出了库名称是,当然最好包含一个链接。
-
@AlexeyRomanov 我只看到上面提到的“熔岩”,还有multiple packages,所以我不确定。也许是this one。