小编wen*_*ong的帖子

如何在Leksah中"定义"用户定义的功能?

我可以为系统功能执行此操作,例如const选择它,右键单击并选择搜索(元数据).这同样适用于用户定义的功能.

你怎么做这样的搜索?

如果用户定义的函数不可能,那么如何读取已有的Haskell项目并在定义和调用之间跳转?

Vim + ctags仅适用于用户定义的函数,并且不如cscope for c/c ++ source强大.

ide haskell leksah

23
推荐指数
1
解决办法
688
查看次数

如何从我的fork向另一个fork发送pull请求?

我将存储库分叉RR1.然后我做了一些改动R1.

乙叉库RR2,和R2成为主要保持存储库.

现在我想发送拉请求R2,该怎么办?

如果我想保持R1更新R2怎么办?

git github

14
推荐指数
1
解决办法
3655
查看次数

OAuth 1.0领域代表什么?

根据[RFC2617]第1.2节添加和解释OPTIONAL领域参数.[OAuth 1.0]

有和没有领域之间有什么区别?

oauth

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

如何理解<Purely Functional Data Structures>中描述的分段二项式堆

纯功能数据结构论文的第6.3.1章中说:

然后,每当我们从一个新元素和一个排名为0 ... r-1的树段创建一个新树时,我们只需将新元素与该段中的第一个根(即,0级树的根)进行比较).较小的元素成为新的根,较大的元素成为根的0级子元素.

  1. T0'是新树的等级0
  2. T0..T(r-1)是从0到r-1的原始树
  3. 较小的元素成为新的根,较大的元素成为根的0级子元素

问题是第3步导致两个等级1树,这与二项式堆冲突.

我误会了吗?

lisp haskell functional-programming ml data-structures

8
推荐指数
1
解决办法
816
查看次数

如何避免使用snapframework在haskell中的不同"字符串"类型之间进行转换?

我想为POST数据生成解码结果.在转换'字符串'时,很多代码都被"浪费"了.这使代码变得丑陋.更好的解决方案?

import           Codec.Binary.Url (decode')
import qualified Data.ByteString.Lazy.Char8 as L (unpack)
import qualified Data.ByteString.Char8 as S (unpack, pack)
import qualified Data.ByteString.Lazy as LBS (pack)

decodeUrlHandler :: Snap()
decodeUrlHandler = do
    body <- readRequestBody (maxBound :: Int64)
    writeLBS $ LBS.pack $ map (fromMaybe 0) $ decode' $ L.unpack body
Run Code Online (Sandbox Code Playgroud)

你的代码为此目的是什么?

haskell type-conversion haskell-snap-framework

7
推荐指数
1
解决办法
623
查看次数

为什么writeSTRef比表达式更快?

每次迭代都会写两次writeSTRef

fib3 :: Int -> Integer
fib3 n = runST $ do
    a <- newSTRef 1
    b <- newSTRef 1
    replicateM_ (n-1) $ do
        !a' <- readSTRef a
        !b' <- readSTRef b
        writeSTRef a b'
        writeSTRef b $! a'+b'
    readSTRef b
Run Code Online (Sandbox Code Playgroud)

每次迭代都会写一次writeSTRef

fib4 :: Int -> Integer
fib4 n = runST $ do
    a <- newSTRef 1
    b <- newSTRef 1
    replicateM_ (n-1) $ do
        !a' <- readSTRef a
        !b' <- readSTRef b
        if a' > b'
          then writeSTRef b …
Run Code Online (Sandbox Code Playgroud)

haskell

7
推荐指数
1
解决办法
228
查看次数

Haskell http响应结果不可读

import Network.URI
import Network.HTTP
import Network.Browser

get :: URI -> IO String
get uri = do
  let req = Request uri GET [] ""
  resp <- browse $ do
    setAllowRedirects True -- handle HTTP redirects
    request req
  return $ rspBody $ snd resp

main = do
  case parseURI "http://cn.bing.com/search?q=hello" of
    Nothing -> putStrLn "Invalid search"
    Just uri -> do
        body <- get uri
        writeFile "output.txt" body
Run Code Online (Sandbox Code Playgroud)

这是haskell输出和curl输出之间的差异

vimdiff同时

encoding haskell http

5
推荐指数
1
解决办法
857
查看次数

Haskell中的C风格枚举?

在C中,我们以这种方式定义枚举:

enum E {
    E0,
    E1,
    E2 = 3,
    E3
};
Run Code Online (Sandbox Code Playgroud)

注意E2 = 3表达式,枚举类型结果E0 == 0, E1 == 1, E2 == 3, E3 == 4.

在Haskell中,我们无法在声明中指定枚举.实现不连续枚举的唯一方法是Enum手动实现类.

有没有方便的方法呢?

我使用Template Haskell 编写了一个演示来生成Enum实例.

data E = E0
       | E1
       | E2_3
       | E3
       deriving Show

enum ''E
Run Code Online (Sandbox Code Playgroud)

我想知道是否有图书馆试图填补这个空白?

enums haskell

4
推荐指数
1
解决办法
193
查看次数

不在范围'foldrl'

在尝试定义函数时

maximum' :: (Ord a) => [a] -> a
maximum' = foldrl (\x acc -> if x > acc then x else acc)
Run Code Online (Sandbox Code Playgroud)

ghci报告错误:

Not in scope: `foldrl'
Failed, modules loaded: none.
Ubuntu 10.04
$ ghci --version
The Glorious Glasgow Haskell Compilation System, version 6.12.1
Run Code Online (Sandbox Code Playgroud)

为什么功能不在foldrl范围内?

haskell scope module

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

分数型的比较

ghci> 4 == 3.9999999999999999
True

ghci> 10.2^2 == 104.04
False
Run Code Online (Sandbox Code Playgroud)

为什么第二个表达式返回False?

floating-point haskell equality

3
推荐指数
2
解决办法
3308
查看次数