这并不是说难写的生成类型的toJSON/FromJSON情况,但仍然,当你生成代码,你可以扔在?或者有一种简单的方法可以让这种情况成为Yesod用户吗?(我没有深入研究TH是如何工作的......)
更新: 好的,我喜欢这个建议但是,说我的持久类型是用户.如果我使用
$(deriveJSON id ''User)
Run Code Online (Sandbox Code Playgroud)
它产生了
Exception when trying to run compile-time code:
Data.Aeson.TH.withType: Unsupported type: TySynD Model.User [] (AppT (ConT Model.UserGeneric) (ConT Database.Persist.GenericSql.Raw.SqlPersist))
Code: deriveJSON (id) 'User
Run Code Online (Sandbox Code Playgroud)
显然是因为它是别名.但
$(deriveJSON id ''UserGeneric)
Run Code Online (Sandbox Code Playgroud)
产量
Kind mis-match
The first argument of `UserGeneric' should have kind `(* -> *)
-> *
-> *',
but `backend[i5XB]' has kind `*'
Run Code Online (Sandbox Code Playgroud)
我可能仍然有错误的类型,但我找不到Persistent生成什么来获得正确的咒语.
看起来Math.random()生成范围为[0,1)的64位浮点数,而新的crypto.getRandomValues()API仅返回整数.使用此API在[0,1)中生成数字的理想方法是什么?
这似乎有效,但似乎不是最理想的:
ints = new Uint32Array(2)
window.crypto.getRandomValues(ints)
return ints[0] / 0xffffffff * ints[1] / 0xffffffff
Run Code Online (Sandbox Code Playgroud)
编辑:澄清一下,我试图产生比Math.random()更好的结果.根据我对浮点的理解,应该可以获得52位随机性的完全随机分数.(?)
编辑2:为了给出更多背景知识,我不是要尝试以密码方式安全做任何事情,但有很多关于Math.random()实施不当的轶事故事(例如http://devoluk.com/google-chrome -math-random-issue.html)所以如果有更好的选择,我想使用它.
Yesod的内置i18n消息文件非常好,但我注意到两个问题:
谢谢你的任何建议!