小编Dra*_*gno的帖子

为什么!0是Microsoft中间语言(MSIL)中的一种类型?

在许多MSIL列表中,我观察到以下内容:

System.Nullable`1<!0> etc ...
Run Code Online (Sandbox Code Playgroud)

要么

class !0 etc ...
Run Code Online (Sandbox Code Playgroud)

!0在这些情况下,这意味着什么?

.net c# cil

86
推荐指数
2
解决办法
4200
查看次数

标准ML的模块系统和OCaml模块系统之间有什么区别(如果有的话)?

我的问题是,标准ML的模块系统和OCaml模块系统之间是否有任何区别?OCaml是否有所有对仿函数,归属等的支持...... SML有哪些?

ocaml ml sml

41
推荐指数
1
解决办法
3123
查看次数

.NET 4中的EnumerateFiles和EnumerateFileSystemEntries有什么区别?

在.Net 4中,有两个函数可以枚举路径中的文件.EnumerateFiles和EnumerateFileSystemEntries.MSDN没有对它们的差异给出足够的解释.这些差异是什么?

.net c#

19
推荐指数
2
解决办法
3806
查看次数

Haskell数据类型中的默认值

在面向对象语言中定义类时,它通常会设置成员变量的默认值.Haskell中是否有任何机制可以在记录类型中执行相同的操作?还有一个后续问题:如果我们从一开始就不知道数据构造函数的所有值,但我们从IO交互中获取它们,我们可以使用OOP中的构建器模式来构建类型吗?

提前致谢

haskell

10
推荐指数
2
解决办法
656
查看次数

如何在Windows 7中配置cabal?

我已经在Windows 7中安装了Haskell Platform 2012.我在控制台中写道cabal update,我发信息说有一个新版本的cabal.我写cabal install cabal-install.安装完成后,它告诉我cabal已安装在C:\ username\AppData\Roaming\cabal中.因此,当我cabal update再次这样做时,我正在采取相同的信息来安装新版本的cabal.我试图从配置文件更改cabal目录,但cabal忽略配置文件.Haskell只能在Unix上运行吗?谢谢

haskell cabal

9
推荐指数
1
解决办法
5219
查看次数

Monadic杂质和Haskell的纯度.他们是如何结合的?

monad构造如何帮助维持纯度(在Haskell中),同时做出不纯净的东西?例如,当你给出的print "Hello"是执行纯粹或不纯的代码时?这是一个非常微妙的细节,但有助于更好地理解功能语言中纯度和杂质的概念.

monads haskell functional-programming

7
推荐指数
2
解决办法
541
查看次数

有多少参数采用Haskell的foldr函数?

我是Haskell的新手,我正在阅读"Real World Haskell"这本书 .在本书的第4章中,作者要求使用fold重写groupBy函数.本书的一位读者(Octavian Voicu)给出了以下解决方案:


theCoolGroupBy :: (a -> a -> Bool) -> [a] -> [[a]]
theCoolGroupBy eq xs = tail $ foldr step (\_ -> [[]]) xs $ (\_ -> False)
                       where step x acc = \p -> if p x then rest p else []:rest (eq x)
                                          where rest q = let y:ys = acc q in (x:y):ys
Run Code Online (Sandbox Code Playgroud)

我的问题很简单:我知道foldr有3个参数:一个函数,一个初始值和一个列表.但在代码的第二行,foldr需要4个参数.为什么会这样? 谢谢.

haskell arguments function fold

6
推荐指数
3
解决办法
2059
查看次数

对于具有命令式语言背景的人来说,哪种函数编程语言最简单?

我想学习一门功能语言,以拓宽视野.我对Python和C/C++有所了解,并希望从一个来自语言命令领域的人那里学习一门语言.我不在乎语言是否足够强大.我只是想要一种语言来学习函数式编程的基础,然后我会尝试更难(和更强大的语言).

谢谢

functional-programming

6
推荐指数
1
解决办法
5521
查看次数

在Haskell中使用花括号是什么意思?

下面的代码

getSpareBuffer :: Handle__ -> IO (BufferMode, CharBuffer)
getSpareBuffer Handle__{haCharBuffer=ref, 
                    haBuffers=spare_ref,
                    haBufferMode=mode}
 = do
case mode of
 NoBuffering -> return (mode, error "no buffer!")
 _ -> do
      bufs <- readIORef spare_ref
      buf  <- readIORef ref
      case bufs of
        BufferListCons b rest -> do
            writeIORef spare_ref rest
            return ( mode, emptyBuffer b (bufSize buf) WriteBuffer)
        BufferListNil -> do
            new_buf <- newCharBuffer (bufSize buf) WriteBuffer
            return (mode, new_buf)
Run Code Online (Sandbox Code Playgroud)

来自GHC源代码.我想知道为什么这段代码的作者在参数的位置使用花括号.以及变量haCharBuffer,haBuffers,haBufferMode如何从ref,spare_ref和mode中获取值.这些值尚未定义.代码文件是ghc-7.4.1\libraries\base\GHC\IO\Handle\Text.hs

GHC代码的另一部分代码需要澄清:

flushByteWriteBuffer :: Handle__ -> IO ()
flushByteWriteBuffer h_@Handle__{..} = do
  bbuf <- …
Run Code Online (Sandbox Code Playgroud)

haskell curly-braces curly-brackets

6
推荐指数
2
解决办法
6334
查看次数

可以折叠用于创建无限列表吗?

我编写了以下代码,它创建了一个无限的Fibonacci数列表:

fibs = 1:1:fib 1 1
  where fib a b = a+b:fib b (a+b)
Run Code Online (Sandbox Code Playgroud)

上面的代码可以使用foldlfoldr避免递归吗?

haskell

6
推荐指数
2
解决办法
973
查看次数