小编ami*_*dfv的帖子

查找本地函数的推断类型

在ghci(或ghc)中有没有办法找到本地函数的推断类型是什么?

例如,如果我有一个功能

f l = map f' l
   where f' = (+1)
Run Code Online (Sandbox Code Playgroud)

:t什么方式在ghci中看到推断类型f'是什么?

haskell type-inference ghci

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

Haskell的Control.Concurrent.Async.mapConcurrent当前有限制吗?

我试图在Haskell中并行运行多个下载,我通常只使用Control.Concurrent.Async.mapConcurrently函数.但是,这样做会打开~3000个连接,这会导致Web服务器拒绝它们.是否可以完成与mapConcurrent相同的任务,但一次只打开有限数量的连接(即一次只打开2个或4个)?

io concurrency haskell asynchronous

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

执行顺序(>> =)不是我的预期

我有一系列网络请求,每个请求大于10秒.
为了让用户知道发生了什么,我给出了更新:

main = do putStr "Downloading the first thing... "
          {- Net request -}
          putStrLn "DONE"
          putStr "Downloading the second thing... "
          {- Net request -}
          putStrLn "DONE"
Run Code Online (Sandbox Code Playgroud)

使用GHCi,这可以按预期工作,但编译或使用runghc,"下载"不打印直到"完成".

我用(>> =)和(>>)重写了它,但是我遇到了同样的问题.

这是怎么回事?

monads haskell do-notation

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

如何命名物理上大写的Haskell变量

haskell中的变量名称需要小写,但是

如果我们想存储g = 9.8和G = 6.67300×10-11(在下面的场景中),如何在.hs文件中声明变量?

传统物理学家提到:

(1)地球上的重力加速度

g = 9.8米/秒^ 2

(2)万有引力常数

G = 6.67300×10-11 m3 kg-1 s-2

haskell naming-conventions

9
推荐指数
2
解决办法
1428
查看次数

在haskeline中更新输出的文本

Haskeline提供了函数outputStroutputStrLn输出stdout,但是有没有办法更新已经输出的文本?我想,例如,当安装程序显示当前安装的百分比时 - 百分比数字更新.

我需要使用curses绑定吗?

command-line haskell haskeline

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

为什么有些Prelude函数是根据foldl定义的?

一般来说,foldl避免赞成foldl'foldr.引用真实世界Haskell:

由于foldl的thunking行为,在实际程序中避免这种功能是明智的:即使它没有完全失败,也会不必要地低效.相反,导入Data.List并使用foldl'.

然而,一些Prelude函数是根据它来定义的(例如(\\)unionBy).为什么是这样?是不是对这些功能引入了太多的严格要求?

haskell built-in

8
推荐指数
2
解决办法
398
查看次数

QLC什么时候效率低得多?

在实践中,查询列表理解似乎适用于Mnesia和ets/dets表的所有用途.是否有任何操作(或操作类型)比QLC等效操作更有效?

(我正在思考哪些内容对RAM更高,查询列表理解还是mnesia index_read?)

erlang

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

Scheme:更改列表中元素的值

我讨厌使用SO作为查找简单函数的方法,但我真的找不到这样的函数:

给出一个列表(1 2 3 4 5),我想要相当于(PHP的,Perl的,Python的)

$a = array(1, 2, 3, 4, 5);   
$a[3] = 100;  
Run Code Online (Sandbox Code Playgroud)

结果如何(1 2 3 100 5)

谢谢!

lisp scheme list

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

有人可以解释((.)$(.))(==)1(1+)0的含义

haskell.org上,我遇到了这个自由风格的功能,被称为"猫头鹰".

((.)$(.))
Run Code Online (Sandbox Code Playgroud)

它的类型签名是 (a -> b -> c) -> a -> (a1 -> b) -> a1 -> c.

这相当于 f a b c d = a b (c d) 并且显然是 ((.)$(.)) (==) 1 (1+) 0 回报True.

所以我的问题是:

  1. 什么是a1在类型签名是什么意思?它与a?有关吗?
  2. (==)某种函数相等运算符?因为0 (==) 0在GHCi中抛出错误.
  3. 1 (1+) 0在这种情况下意味着什么?我不知道这甚至是一个有效的表达方式.
  4. 为什么表达式会返回True

syntax haskell pointfree

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

从HTTPS下载

我会保持简单:
我想通过HTTPS下载文件; 我尝试过的方法没有用(Network.HTTP.Wget,Network.Curl,Network.Download).
建议?
谢谢!

https haskell

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