似乎采用/返回Int
(即ByteString.hGet
和Data.List.length
)的常见模式与使用强烈描述类型的Haskell模式相反,因为这些情况中的许多只能处理正数.使用它是不是更好Word
,或者这些功能是否部分存在Int
?
我想将当前目录中的所有文件添加到git:
git add .
error: open(".mysql_history"): Permission denied
fatal: unable to index file .mysql_history
Run Code Online (Sandbox Code Playgroud)
没关系.该文件恰好位于此目录中并由root拥有.我想添加所有其他文件.有没有办法做到这一点,而无需手动手动添加每个文件?
我知道我可以添加要排除或.gitignore的文件,但我想让它根据权限忽略一些东西(这样的其他文件很可能最终会在目录中,并将它们添加到.gitignore一直很痛苦).
http://hackage.haskell.org/package/free在Control.Monad.Free.Free
允许一个获得获得了"自由单子"对于任何给定Functor
.但是,它没有MonadFix
实例.这是因为这样的实例无法写入,还是只是被遗漏了?
如果不能写这样的实例,为什么不呢?
是否可以(*)
在Haskell中实现最严格的语义(标准化的Haskell首选,但扩展是可以的.使用编译器内部是作弊)?例如,这样的定义应该导致以下情况:
0 * ? = 0
? * 0 = 0
Run Code Online (Sandbox Code Playgroud)
并且只有:
? * ? = ?
Run Code Online (Sandbox Code Playgroud)
我可以构建满足上述情况之一但不能同时满足这两种情况的模式匹配,因为零检查会强制该值.
我正在玩Haskell中的一些lambda演算,特别是教堂数字.我有以下定义:
let zero = (\f z -> z)
let one = (\f z -> f z)
let two = (\f z -> f (f z))
let iszero = (\n -> n (\x -> (\x y -> y)) (\x y -> x))
let mult = (\m n -> (\s z -> m (\x -> n s x) z))
Run Code Online (Sandbox Code Playgroud)
这有效:
:t (\n -> (iszero n) one (mult one one))
Run Code Online (Sandbox Code Playgroud)
发生检查时失败:
:t (\n -> (iszero n) one (mult n one))
Run Code Online (Sandbox Code Playgroud)
我iszero
和 …
我希望能够从shell脚本判断任何POSIX系统上是否存在命令.
在Linux上,我可以执行以下操作:
if which <command>; then
...snip...
fi
Run Code Online (Sandbox Code Playgroud)
但是,which
当命令不存在时,Solaris和MacOS 不提供退出失败代码,它们只是向STDOUT输出错误消息.
另外,我最近发现which
命令本身不是POSIX(参见http://www.opengroup.org/onlinepubs/009695399/utilities/)
有任何想法吗?
是x >>= f
相当于retract (liftF x >>= liftF . f)
?
也就是说,一个免费monad构建的monad实例是一个Functor,它也是一个Monad将拥有与原Monad相同的monad实例?
一个小组扩展了monoid的概念以允许反转.这允许:
gremove :: (Group a) => a -> a -> a
gremove x y = x `mappend` (invert y)
Run Code Online (Sandbox Code Playgroud)
但是那些像自然数这样的结构怎么样呢?我在考虑:
class (Monoid a) => MRemove a where
mremove :: a -> a -> a
Run Code Online (Sandbox Code Playgroud)
有法律:
x `mremove` x = mempty
x `mremove` mempty = x
(x `mappend` y) `mremove` y = x
Run Code Online (Sandbox Code Playgroud)
另外:
class (MRemove a) => Group a where
invert :: a -> a
invert x = mempty `mremove` x
-- | For defining MRemove in terms of Group …
Run Code Online (Sandbox Code Playgroud) 谁能指点我一个如何使用没有Yesod的哈姆雷特的例子? http://www.yesodweb.com/book/templates是一个很好的文档,但我无法让我的ghci会话渲染一个简单的哈姆雷特模板而不会崩溃.
我正在尝试编写一个允许在Windows中移动文件的实用程序,当它找到正在使用的文件时,将设置该文件在重新启动时移动.
似乎MoveFileEx(http://msdn.microsoft.com/en-us/library/aa365240 ( VS.85 ) .aspx)是对此的正确调用,但我无法弄清楚我正在寻找什么错误代码从GetLastError(http://msdn.microsoft.com/en-us/library/ms679360 ( VS.85 ) .aspx)看到该文件正在使用中.
我希望实用程序在存在实际权限问题时失败.无论如何要区分你不能写在那里和使用中的覆盖错误?
另外,如果我在用户的临时文件夹中移动了文件,它们会在延迟重命名之前被删除吗?