小编Mai*_*tor的帖子

无意义的“不在范围内”错误

有时 Agda 会给我一些无意义的“不在范围内”错误,让我不知道该怎么做。下面是一个例子:

open import Data.Product
open import Data.Bool
open import Data.Unit

postulate
  ?    : (Set ? Set) ? Set
  In   : {F : Set ? Set} ? F (? F) ? ? F
  unIn : {F : Set ? Set} ? ? F ? F (? F)

NatT : Set
NatT = ? ? x -> ? Bool (? { true -> ?; false -> x })

x : NatT
x = In (false , In (true, tt))
Run Code Online (Sandbox Code Playgroud)

这个抱怨 …

agda

4
推荐指数
1
解决办法
703
查看次数

是否有任何直接的方法来评估递归函数广度优先?

请注意以下计划:

foo :: Int -> Int -> Bool
foo n x | x == n    = True
foo n x | otherwise = foo n (x * 2) || foo n (x * 2 + 1)

main :: IO ()
main = print (foo 10 0)
Run Code Online (Sandbox Code Playgroud)

它实现了一个函数foo,它在两个分支中递归调用自身,在递归树时增加第二个参数.True如果它的第二个参数变得与第一个参数相等,那么"应该"返回,这是因为((0 * 2 + 1) * 2 + 1) * 2 == 10.但这不会发生,因为Haskell试图评估左分支深度优先.

通常,这可以通过实现BFS来解决,但在Haskell中这样做很尴尬.我想知道是否有任何自动化或至少不那么突兀的方式来评估递归函数广度优先?

haskell

4
推荐指数
1
解决办法
140
查看次数

如何创建一个返回两种不同类型的类型良好的函数?

我对将Formality-Core模块编译为 Haskell 库非常感兴趣。虽然我可以unsafeCoerce在任何地方使用,但如果我能保留类型信息,允许编译模块在 Cabal 上发布并被其他 Haskell 项目使用,那就更有趣了。问题是依赖类型允许被 Haskell 禁止的程序。例如,foo下面的函数:

foo: (b : Bool) -> If(b)(Nat)(Bool)
  (b)
  b<(b) If(b)(Nat)(Bool)>
  | zero;
  | false;
Run Code Online (Sandbox Code Playgroud)

根据输入返回不同的类型。如果输入为false,则返回数字zero。如果输入为true,则返回布尔值false。似乎这样的函数无法转换为 Haskell。我相信,在过去的几年里,Haskell 在依赖类型方面取得了很好的进展,所以,我想知道:有没有办法编写基于输入值返回不同类型的函数?

haskell dependent-type

4
推荐指数
2
解决办法
171
查看次数

如何在 Kind-Lang 等纯函数式语言中使用代数数据类型对 Int 类型进行编码?

在 Kind-Lang 等函数式语言助手中,自然数通常被形式化为具有两个构造函数(零和 succ)的递归代数数据类型:

type Nat {
  zero
  succ(pred: Nat)
}
Run Code Online (Sandbox Code Playgroud)

至于 Int 类型,它也包含负数,在 Kind 上对其进行编码的最佳方法是什么?

functional-programming algebraic-data-types kind-lang

4
推荐指数
1
解决办法
44
查看次数

在Clojure中用什么来代替类和对象?你能提供一个例子吗?

你能举例说明一个人如何代表一个具有可变属性的"玩家"类,如HP和位置(3d矢量),init,setter和getter等函数?

oop class clojure

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

Vim:如何创建一个等待密钥并使用它的宏/命令?

例如,我想暂时映射到fxsj.也就是说,当我按q时,VIM将执行fxsqj.当我按k时,VIM将执行fxskj.等等.

vim macros command

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

如何为多人游戏作弊(例如:Tibia)从客户端访问信息(在本例中为C++)?

Tibia是一款在线多人游戏,通过C++客户端(图像)工作.有一些作弊工具允许,例如,更改你的字符的外观,当你的HP达到某一点时使用恢复项目甚至描绘没有美学的图像(图像).

这些软件如何访问Tibia使用的内部存储器,以及它们如何确定存储特定信息的位置?

c++ memory automation code-injection

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

在node.js上扩展lodash/underscore?

Lodash和Underscore有一个名为mixin的方法,允许您扩展库.你如何编写一个扩展它们的库?

例如,如果您创建了名为"extend_lodash.js"的文件,则包含以下内容:

_.mixin({
   new_function:function(){}
})
Run Code Online (Sandbox Code Playgroud)

你会如何在项目中使用它?以下代码不起作用:

_ = require("lodash");
require("extend_lodash.js");
Run Code Online (Sandbox Code Playgroud)

javascript module node.js underscore.js lodash

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

如何告诉Three.js在缩放对象的纹理时不使用插值?

它是一个以精灵艺术作为纹理的平面,因此我希望它使用无插值方法进行缩放.

javascript html5 webgl three.js

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

如何使用Processing.js水平翻转图像?

没有太多可以添加到这个问题.如何使用Processing.js水平翻转图像?

javascript processing html5 canvas processing.js

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