小编Zna*_*atz的帖子

简单的例子来说明Category,Monoid和Monad?

我对这三个概念感到非常困惑.

有没有简单的例子来说明Category,Monoid和Monad之间的区别?

如果有这些抽象概念的说明,将会非常有帮助.

monads haskell category-theory monoids

49
推荐指数
1
解决办法
3255
查看次数

如何将Ruby升级到2.0

我的红宝石版本是

ruby 1.9.3p374 (2013-01-15) [i386-mingw32]
Run Code Online (Sandbox Code Playgroud)

我在安装了mingw的Windows 8下运行.

如何将其升级到ruby 2.0?

ruby rubygems ruby-upgrade

13
推荐指数
1
解决办法
1万
查看次数

Haskell如何隐藏数据构造函数?

我探索了System.Random.StdGen并在源代码中看到了这段代码.

data StdGen = StdGen Int32 Int32
Run Code Online (Sandbox Code Playgroud)

模块似乎也出口了StdGen.

module System.Random (

    RandomGen(next, split, genRange)

    , StdGen

    ...
Run Code Online (Sandbox Code Playgroud)

但是,为什么我不能在我的代码中这样做,比如说,

Prelude System.Random> StdGen 1 2

Not in scope: data constructor `System.Random.StdGen'**
Run Code Online (Sandbox Code Playgroud)

另一方面,我可以做到这一点,

module F (Foo) where

    import GHC.Int

    data Foo = Foo GHC.Int.Int32 GHC.Int.Int32 deriving (Show)
Run Code Online (Sandbox Code Playgroud)

Prelude> Foo 1 2

Foo 1 2
Run Code Online (Sandbox Code Playgroud)

请有人请告诉我这个数据构造函数实际上是如何隐藏的?

constructor haskell system

12
推荐指数
2
解决办法
1604
查看次数

haskell中多个类型变量的顺序是什么规则?

例如,ParsecT在其定义中有多个类型变量.

newtype ParsecT s u m a
    = ParsecT {unParser :: forall b .
                 State s u
              -> (a -> State s u -> ParseError -> m b) 
              -> (ParseError -> m b)                   
              -> (a -> State s u -> ParseError -> m b) 
              -> (ParseError -> m b)                   
              -> m b
             } 
Run Code Online (Sandbox Code Playgroud)

我们可以这样做吗?

newtype ParsecT m a s u     -- Only the order of s u m a is changed to m a s u.
    = ParsecT {unParser :: …
Run Code Online (Sandbox Code Playgroud)

haskell ghc type-variables newtype

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

为什么在引用newtype包装数字类型时我可以省略构造函数?

真实世界Haskell的第321页

有这些代码,

...

{-# LANGUAGE GeneralizedNewtypeDeriving #-}
newtype AInt = A { unA::Int }
    deriving (Show, Eq, Num)

instance Monoid AInt where
    mempty = 0
Run Code Online (Sandbox Code Playgroud)

我的困惑是为什么

mempty = 0
Run Code Online (Sandbox Code Playgroud)

但不是

mempty = A 0
Run Code Online (Sandbox Code Playgroud)


我也注意到了这两点

ghci> 0 :: AInt
Run Code Online (Sandbox Code Playgroud)

ghci> A 0 :: AInt
Run Code Online (Sandbox Code Playgroud)

给我同样的回应

A { unA = 0 }
Run Code Online (Sandbox Code Playgroud)

有人请告诉我这两个有什么区别?

haskell typeclass newtype

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

实际上$功能在haskell中做了什么?

我知道

$ :: (a->b) -> a -> b
f $ x = f x
Run Code Online (Sandbox Code Playgroud)

直觉上,在我看来,比如说,1. $将函数的评估延迟到左边2.评估其右边的结果3.将其左边的结果输入到右边.

这对我来说非常有意义,

ghci> length $ [1..5]
5
ghci> ($) length [1..5]
5
Run Code Online (Sandbox Code Playgroud)

我不明白的是为什么,

ghci> ($ [1..5]) length
5
Run Code Online (Sandbox Code Playgroud)

从$的类型来看,是不是它的(第一个)论证应该是一个函数?

syntax haskell operators dollar-sign haskell-prelude

9
推荐指数
3
解决办法
445
查看次数

Haskell中的这些方括号是什么?

我在Indexed Monad中阅读了以下代码

{-# LANGUAGE QuasiQuotes #-}
import Control.Monad.Indexed.State
import Control.Monad.Indexed
import Language.Haskell.IndexedDo

hoge :: IxState Int [Int] ()
hoge = [ido|do
    imodify (*10)
    imodify show
    imodify reverse
    imodify (++"123")
    imodify $ map fromEnum
    |]
Run Code Online (Sandbox Code Playgroud)

这些符号的语法是[|....|]什么?

它是某种语法糖吗?

monads haskell ghc

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

如何在Linux中调试Windows可执行文件

我正在使用Ubuntu 13.10.可以在Linux下调试Windows可执行文件吗?

我已经尝试过gdb,但它总是抛出这个错误信息.

/bin/bash: line 0: exec: /some.exe: cannot execute: Permission denied
Run Code Online (Sandbox Code Playgroud)

linux debugging gdb

3
推荐指数
1
解决办法
8711
查看次数

如何在haskell中将功能提升到变形monad?

我知道数据构造函数和run***函数,

我可以将任何函数提升到特定的MonadTrans实例.

像这样,

import Control.Monad.Trans
import Control.Monad.Trans.Maybe
import Control.Monad

liftF :: (Monad m) => (a -> b) -> MaybeT m a -> MaybeT m b
liftF f x = MaybeT $ do
       inner <- runMaybeT x
       return $ liftM f inner
Run Code Online (Sandbox Code Playgroud)

但是我怎样才能将这个liftF推广到

liftF :: (MonadTrans t, Monad m) => (a -> b) -> t m a -> t m b
Run Code Online (Sandbox Code Playgroud)

monads haskell monad-transformers

2
推荐指数
1
解决办法
927
查看次数