小编sin*_*yma的帖子

Int vs Word常用吗?

似乎采用/返回Int(即ByteString.hGetData.List.length)的常见模式与使用强烈描述类型的Haskell模式相反,因为这些情况中的许多只能处理正数.使用它是不是更好Word,或者这些功能是否部分存在Int

haskell type-safety

34
推荐指数
3
解决办法
3489
查看次数

由于权限,无法将所有文件添加到git

我想将当前目录中的所有文件添加到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一直很痛苦).

git

29
推荐指数
4
解决办法
4万
查看次数

可以为"免费"实现MonadFix吗?

http://hackage.haskell.org/package/freeControl.Monad.Free.Free允许一个获得获得了"自由单子"对于任何给定Functor.但是,它没有MonadFix实例.这是因为这样的实例无法写入,还是只是被遗漏了?

如果不能写这样的实例,为什么不呢?

haskell monadfix free-monad

21
推荐指数
2
解决办法
1155
查看次数

最不严格(*)

是否可以(*)在Haskell中实现最严格的语义(标准化的Haskell首选,但扩展是可以的.使用编译器内部是作弊)?例如,这样的定义应该导致以下情况:

0 * ? = 0
? * 0 = 0
Run Code Online (Sandbox Code Playgroud)

并且只有:

? * ? = ?
Run Code Online (Sandbox Code Playgroud)

我可以构建满足上述情况之一但不能同时满足这两种情况的模式匹配,因为零检查会强制该值.

haskell lazy-evaluation

20
推荐指数
2
解决办法
554
查看次数

Haskell中的Lambda演算:有没有办法让教堂数字类型检查?

我正在玩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和 …

haskell lambda-calculus church-encoding

17
推荐指数
2
解决办法
1811
查看次数

找出POSIX系统上是否存在命令

我希望能够从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/)

有任何想法吗?

unix shell posix

16
推荐指数
1
解决办法
6769
查看次数

Monad的免费Monad

x >>= f相当于retract (liftF x >>= liftF . f)

也就是说,一个免费monad构建的monad实例是一个Functor,它也是一个Monad将拥有与原Monad相同的monad实例?

haskell free-monad

15
推荐指数
1
解决办法
689
查看次数

什么是"减法"但没有逆的结构?

一个小组扩展了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)

haskell abstract-algebra

14
推荐指数
2
解决办法
779
查看次数

在没有Yesod的情况下在Haskell中使用Hamlet

谁能指点我一个如何使用没有Yesod的哈姆雷特的例子? http://www.yesodweb.com/book/templates是一个很好的文档,但我无法让我的ghci会话渲染一个简单的哈姆雷特模板而不会崩溃.

haskell hamlet

11
推荐指数
1
解决办法
2064
查看次数

Windows:覆盖正在使用的文件

我正在尝试编写一个允许在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)看到该文件正在使用中.

我希望实用程序在存在实际权限问题时失败.无论如何要区分你不能写在那里和使用中的覆盖错误?

另外,如果我在用户的临时文件夹中移动了文件,它们会在延迟重命名之前被删除吗?

c c++ windows winapi overwrite

10
推荐指数
1
解决办法
2340
查看次数