小编mnt*_*123的帖子

Haskell有助于理解这个状态monad代码:runState在哪里定义?

我是Haskell的新手并试图了解monad.我将通过此代码 将其放在这里以供快速参考

newtype State s a = State { runState :: s -> (a,s) }

instance Monad (State s) where
  return a = State $ \s -> (a, s)

  State act >>= k = State $ \s ->
    let (a, s') = act s
    in runState (k a) s'

get :: State s s
get = State $ \s -> (s, s)

put :: s -> State s ()
put s = State $ \_ -> ((), s)

modify …
Run Code Online (Sandbox Code Playgroud)

haskell state-monad

11
推荐指数
2
解决办法
1206
查看次数

哪些软件包硬连线到GHC?

在尝试时cabal sandbox我发现你无法base在沙箱中安装不同版本和其他一些软件包,如本答案所述.

我想知道GHC中哪些软件包是硬连线的.某处有完整的清单吗?我用谷歌找不到它.我不只是想获得使用ghc安装的软件包列表.我想知道哪些软件包是GHC固有的,即使在沙箱中也无法安装这些软件包的多个版本.换句话说,哪些套餐根本不适用于cabal沙箱?

haskell sandbox ghc cabal

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

Haskell如何解决cabal错误:缺少对外部库的依赖?

虽然cabal install gd我试图遇到以下错误

Configuring gd-3000.7.3...
cabal: Missing dependencies on foreign libraries:
* Missing (or bad) header file: gd.h
* Missing C libraries: gd, png, jpeg
This problem can usually be solved by installing the system packages that provide these libraries (you may need the "-dev" versions). ...
Run Code Online (Sandbox Code Playgroud)

它说 Missing C libraries: gd, png, jpeg

我想我是对的,如果我把它解释为:缺少的库是一些未指定版本的:libgd,libpng,libjpeg和他们的-dev versions.

我们看到cabal没有报告这些库的版本,因此很难确定它需要哪个版本的外部库.

gd.cabalhackage网站上读到了这个

有一条线说:

Extra-libraries: gd, png, z, jpeg, …

dependencies haskell cabal

7
推荐指数
0
解决办法
917
查看次数

解释Haskell广度第一个编号代码来遍历树

我正在阅读Chris Okasaki撰写的这篇论文 ; 标题为"广度优先编号:算法设计中小练习的教训".

问题是 - 算法中的魔法是怎么发生的?有一些数字(例如图7标题为"将一个级别的输出线程化为下一级别的输入")不幸的是,也许只有我,但这个数字让我感到困惑.我不明白线程是如何发生的?

algorithm tree haskell breadth-first-search tree-traversal

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

haskell如何从此代码中删除列表用法?

我正在努力学习Haskell并努力学习二进制IO.此代码改编自我之前的一个问题的答案中给出的代码.

我试图从给定的文件中读取很多Word32值和一些Word8值(元数据).目前,我编写的程序只是将Word32文件中的值读入未装箱的矢量.

此代码的问题在于它replicateMWord32从文件中读取多个值时使用list(via ).我想摆脱中间列表(出于效率原因),并希望使用ByteString直接在文件的向量中读取数据.

这是我完整的工作代码.

import Data.Word
import qualified Data.ByteString.Lazy as BIN
import Data.Binary.Get
import Data.Binary.Put
import qualified Data.Vector.Unboxed as V
import Control.Monad
import System.IO

main = do
  h_in  <- openFile "dat.bin" ReadMode
  v <- readInVector 10 h_in 
  putStrLn (show v)
  hClose h_in

readInVector n h_in = do
 bin1 <- BIN.hGet h_in (n*100)
 let ints1 = runGet (replicateM n getWord32le) bin1
 let v = V.fromList (ints1) :: V.Vector …
Run Code Online (Sandbox Code Playgroud)

io binary haskell vector

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

gitignore *〜和其他模式的含义是什么?

我碰到了这个.gitignore文件,无法理解。特别是第一行*~和第二行也是如此。

以下是完整的内容,供快速参考:

*~
\#*\#
*.swp
tmp/*
private/**/*
public/cache
.DS_Store
.#*
example_presentation.html
Run Code Online (Sandbox Code Playgroud)

请解释一下。在哪里可以找到gitignore使用的模式的详细语法(除手册页外)?

我已经尝试过的人的页面,但很可惜,我发现模式的描述有不那么有用。因此是一个问题。

git gitignore

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

Haskell如何解决此错误:不支持的扩展名:MultiWayIf

在尝试安装friday软件包时,我收到了错误消息

Preprocessing library friday-0.2.2.0...

src/Vision/Detector/Edge.hs:3:14: Unsupported extension: MultiWayIf
cabal: Error: some packages failed to install:
friday-0.2.2.0 failed during the building phase. The exception was:
ExitFailure 1
Run Code Online (Sandbox Code Playgroud)

如何解决此错误?

我正在使用ghc版本7.4.1和

cabal-install version 0.14.0
using version 1.14.0 of the Cabal library 
Run Code Online (Sandbox Code Playgroud)

haskell cabal

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

Haskell:如何使用Data.Time将分钟添加到当前时间?

我想在给定的给定时间内添加/减去给定的分钟数并找出结果时间.

例如,假设给定时间是11:30 AM,添加的分钟数是100,那么结果时间是01:10 PM

如何使用Data-Time库在Haskell中完成?我尝试在Haskell网站上阅读文档,但几乎找不到任何东西.

该文档站点上没有显示示例.此外,Haskell网站上食谱不包含任何时间计算示例.

编辑:不需要当前时间,它应该适用于任何给定的时间.时间可以像"11:30"这样的字符串给出.

time haskell clock

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

如何从Haskell中的字符串解析UTCTime类型的时间值?

这是不久前问的一个后续问题。

我无法找到一个简单的例子(对不起我的谷歌技能)在哈斯克尔现场展示了如何使用该Data.Time功能来转换格式StringUTCTime,然后能够从加/减分/秒和转换回UTCTime至格式String

我要寻找一个例子,说明如何转换String(例如像"10:20:30"UTCTime,然后加1000秒,那个时候,怎么办使用此哈斯克尔Data.Time库,而完全不使用IO?

函数的类型应为FormatTime -> String -> UTCTime

该函数应使用TimeLocaleFormatTime需要区域设置/格式。

库中有太多的函数,而且类型太多,以至于令人困惑。readTimeTimeLocaleParseTime tNominalDiffTimeTime,什么不是。

请不要仅指向Haskell网站文档。大多数文档都只是源代码中的类型签名转储,几乎没有任何示例。抱歉,这很糟糕,但是我花了很多时间试图从那些文档中找出一些东西。

将此与Python文档进行比较。这么多美丽的例子。谢天谢地,有。

time parsing haskell

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

如何改进这个非常慢和低效的Haskell程序来逐字节处理二进制文件?

我想在Haskell中编写一个类似hexdump的程序.我编写了以下程序,我很高兴它可以工作并提供所需的输出,但它非常慢且效率低.它是根据这个答案中给出的程序改编的.

我用一个示例文件运行程序处理少于1MB的文件大约需要1分钟.标准的Linux hexdump程序可以在不到一秒的时间内完成工作.我想在程序中做的只是read-> process->在bytestring中写入所有单个字节.

这是一个问题 - 如何有效地读取/处理/写入字节串(逐字节,即不使用任何其他函数getWord32le,如果这是需要的)?我想对每个单独的字节进行算术和逻辑运算,而不是Word32le像那样的字节组.我没有找到像Byte这样的数据类型.

无论如何,这是我写的代码,它在ghci(版本7.4)上成功运行 -

module Main where

import Data.Time.Clock
import Data.Char
import qualified Data.ByteString.Lazy as BIN
import Data.ByteString.Lazy.Char8
import Data.Binary.Get
import Data.Binary.Put
import System.IO
import Numeric (showHex, showIntAtBase)

main = do
  let infile = "rose_rosebud_flower.jpg"
  let outfile = "rose_rosebud_flower.hex"
  h_in  <- openFile infile ReadMode
  System.IO.putStrLn "before time: "
  t1 <- getCurrentTime >>= return . utctDayTime
  System.IO.putStrLn $ (show t1)
  process_file h_in outfile
  System.IO.putStrLn "after time: " …
Run Code Online (Sandbox Code Playgroud)

binary performance haskell bytestring

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