我知道冲突的可能性很小,但是如果我生成了一批1000个GUID(例如),那么可以安全地假设它们都是唯一保存测试的吗?
奖金问题
测试GUID唯一性的最佳方法是什么?布隆过滤器可能吗?
我正在研究陶的实验,但我对其看似死气沉沉的状态感到有些偏见.它自2008年以来一直没有更新,看起来他们的网站大致在同一时间停止运作.
有没有人有关于当前情况的任何信息或知道它的稳定性?
我有一个包含许多字段的类,这些字段通常在构造函数中从类中的其他数据计算出来.它们未被序列化为XML,因为对其余数据的任何更改都可能需要重新计算.
有没有办法设置函数调用以在反序列化时触发?
我正在使用-XExistentialQuantification
GHC扩展为特定类型类(Shape
)的值创建异构容器:
-- Container type
data Object = forall a. Shape a => Object a
-- 'Shape' class. Methods not important
class Eq s => Shape s where
doStuff :: s -> s
Run Code Online (Sandbox Code Playgroud)
鉴于所有实例Shape
都是实例Eq
,是否有办法制作Object
实例Eq
?
我目前遇到的问题是我认为我的模型视图矩阵生成器(尽管它也可能是我糟糕的自生几何,不确定).
无论哪种方式,我都想知道是否有任何工具用于可视化这些矩阵并展示他们正在做什么.我脑海中的图像是相对于样本3d场景和相机视图渲染的相机视锥.
令我感到震惊的是,它可以成为教授这些矩阵如何工作的有用工具.我自己仍然对整个问题感到困惑(但我正在慢慢学习:)
有什么像这样的吗?
我目前正在处理ReaderT r (Rand StdGen) a
我希望并行运行的计算.我遇到了Monad Parallel,看起来它会做我想要的.
已经存在MonadParallel的实例,ReaderT
但是我必须Rand
从monad-random创建自己的实例.但是,我不确定我做得对.我对Haskell中的并行编程并不太熟悉,但我相信有人期望在并行中运行计算应该给出与它们正常运行时相同的值.因为我的Rand的bindM2实例使用split
(因此从同一个初始生成器获取一组不同的随机数),这不是我的实例的情况.
instance P.MonadParallel (Rand StdGen) where
bindM2 f ma mb = do
split1 <- getSplit
split2 <- getSplit
let a = evalRand ma split1
let b = evalRand mb split2
a `par` b `pseq` f a b
Run Code Online (Sandbox Code Playgroud)
虽然我觉得有一种情况可以忽略这一点(数字仍然是随机的,对吗?)我也不禁感到我错过了什么.这没关系还是有更好的解决方案?
我一直在研究一个Haskell库包,它需要Windows上的自定义.dll和.lib来与某些OS API进行通信..lib与extra-libraries
字段链接到库中,DLL安装在cabal包目录中data-files
.
出于某种原因(我不是以任何方式链接的专家,但这看起来很奇怪)如果我创建一个使用我的包的测试可执行文件(在build-depends
字段中),它想要链接在用于编译的相同的.lib中库 - 即使它只是调用库函数,而不是.lib暴露的任何东西.显然它需要在运行时访问.dll,但这是可以预料的.需要.lib似乎很奇怪.
我希望.lib已经链接到Cabal/GHC为我的库安装时生成的.a文件.这不是这种情况吗?如果是,有人可以解释为什么会这样吗?
我一直在教自己关于类型级编程,并希望编写一个简单的自然数加法类型函数.我的第一个版本如下:
data Z
data S n
type One = S Z
type Two = S (S Z)
type family Plus m n :: *
type instance Plus Z n = n
type instance Plus (S m) n = S (Plus m n)
Run Code Online (Sandbox Code Playgroud)
所以在GHCi我能做到:
ghci> :t undefined :: Plus One Two
undefined :: Plus One Two :: S * (S * (S * Z))
Run Code Online (Sandbox Code Playgroud)
哪个按预期工作.然后我决定通过修改Z
和S
类型来尝试DataKinds扩展:
data Nat = Z | S Nat
Run Code Online (Sandbox Code Playgroud)
Plus系列现在可以返回Nat
一种:
type family …
Run Code Online (Sandbox Code Playgroud) 我正在编写一个生成图像的程序,我希望将其带入Repa阵列.我目前正在使用的类型:
data Colour = Colour Double Double Double
Run Code Online (Sandbox Code Playgroud)
表示像素,我有一个(可能效率低但功能齐全)的函数,它将a Colour
转换为DIM1
数组:
colourToRepa :: Colour -> Array U DIM1 Double
colourToRepa (Colour r g b) = R.fromListUnboxed (Z :. (3::Int)) [r,g,b]
Run Code Online (Sandbox Code Playgroud)
目前我的程序中的图像只是一个[Colour]
具有(Int, Int)
代表尺寸的值.
我可以使用它来构建一个Array V DIM2 Colour
足够容易的,但有没有办法(使用colourToRepa
或以其他方式)将此数组扩展为Array U DIM3 Double
?
使用列表我可以使用map
但是Repa的地图保留了数组的形状(我想从a DIM2
到a DIM3
).
我对Lua有点新手(还没有真正做到这一点)我正试着把我的思想包裹在metatables中.我曾经让他们工作过,但现在(经过几个月)我遇到了一些非常奇怪的事情.
运行时该脚本应该打印什么?
__mt = {}
__mt.__index = function(table, key)
print("In __index")
return 99
end
test = {}
test.x = 5
setmetatable(test, __mt)
print(test.x)
Run Code Online (Sandbox Code Playgroud)
就个人而言,我希望它打印"In __index"(来自metamethod),然后是99.然而,每当我运行它时,我得到5.我没有做任何事情都可以让索引元方法运行.它只是像我正在使用的行为rawget()
.
奇怪的是,添加
print(getmetatable(test).__index(test, "x"))
Run Code Online (Sandbox Code Playgroud)
会做正确的事.metatable在那里,__index()
是正确的,它只是没有被调用.
这是一个错误还是我只是在做一些愚蠢的事情?我说不出来.