小编Dan*_*ton的帖子

综合初学者的virtualenv教程?

我最近听到了关于virtualenv的嗡嗡声,我很感兴趣.但我所听到的只是一点点赞美,并且没有清楚地了解它是什么或如何使用它.

我正在寻找(理想情况下)一个后续教程,它可以带我从Windows或Linux上没有Python,并解释每一步(没有特定的顺序):

  • 我该怎么办才能开始使用 virtualenv
  • 使用的具体原因virtualenv是一个好主意
  • 我可以/不能使用的情况 virtualenv
  • 我应该/不应该使用的情况 virtualenv

并且全面地介绍了应该+可以变化的几个样本情况.

那么有什么好的教程来涵盖这些东西?或者如果您有时间和兴趣,也许您可​​以在这里回答其中的一些问题.无论是在你的答案中,还是作为回答它的教程的链接,这些都是我想知道的.

python virtualenv

352
推荐指数
3
解决办法
15万
查看次数

Template Haskell有什么不好的?

似乎模板Haskell经常被Haskell社区视为一种​​不幸的便利.我很难准确地说出我在这方面所观察到的内容,但请考虑这几个例子

我已经看过各种博客文章,其中人们使用模板Haskell做了相当简洁的东西,实现了更好的语法,这在常规的Haskell中是不可能的,以及巨大的样板减少.那么为什么模板Haskell以这种方式受到鄙视呢?是什么让它不受欢迎?在什么情况下应避免模板Haskell,为什么?

haskell template-haskell

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

Haskell中的Comonad类型类是什么?

Haskell中的Comonad类型类是什么?作为Comonad从Control.Comonad在comonad包(即提供Comonad类型类也是任何其他包的说明欢迎).我模糊地听说过Comonad,但我真正知道的是它提供的extract :: w a -> a,与Monad相似return :: a -> m a.

在"真实"代码中注意Comonad的"真实生活"用途的奖励积分.

haskell typeclass comonad

103
推荐指数
2
解决办法
2万
查看次数

Haskell printf如何工作?

Haskell的类型安全性仅对于依赖类型的语言是首屈一指的.但是Text.Printf有一些深刻的魔力似乎相当类型.

> printf "%d\n" 3
3
> printf "%s %f %d" "foo" 3.3 3
foo 3.3 3
Run Code Online (Sandbox Code Playgroud)

这背后的深层魔力是什么?该Text.Printf.printf函数如何采用像这样的可变参数?

用于允许Haskell中的可变参数的一般技术是什么,它是如何工作的?

(旁注:使用这​​种技术时,某种类型的安全性显然会丢失.)

> :t printf "%d\n" "foo"
printf "%d\n" "foo" :: (PrintfType ([Char] -> t)) => t
Run Code Online (Sandbox Code Playgroud)

printf haskell variadic-functions polyvariadic

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

什么是Haskell的严格要点?

我们都知道(或应该知道)Haskell默认是懒惰的.在必须对其进行评估之前,不评估任何内容.那么什么时候必须评估一下?Haskell必须严格要点.我把这些称为"严格点",虽然这个术语并不像我想象的那么广泛.据我说:

Haskell中的减少(或评估)发生在严格点处.

所以,问题是:什么,准确地说,是Haskell的严格点?我的直觉说main,seq/爆炸模式,模式匹配以及IO通过执行的任何动作main都是主要的严格点,但我不知道为什么我知道这一点.

(另外,如果他们不叫"严点",什么他们叫什么名字?)

我想一个好的答案将包括一些关于WHNF等的讨论.我也想象它可能触及lambda演算.


编辑:关于这个问题的其他想法.

正如我在这个问题上的反思,我认为在严格点的定义中添加一些东西会更清楚.严格点可以具有不同的上下文和不同的深度(或严格性).回到我的定义"Haskell的减少只发生在严格点",让我们在这个定义中添加这个子句:"只有在评估或减少周围环境时才会触发严格点."

所以,让我试着让你开始我想要的那种答案.main是严格的一点.它被特别指定为其上下文的主要严格点:程序.当main评估程序(的上下文)时,激活main的严格点.主要深度是最大的:必须进行全面评估.Main通常由IO动作组成,它们也是严格点,其背景是main.

现在你尝试:seq用这些术语讨论和模式匹配.解释功能应用的细微差别:它是如何严格的?怎么回事?怎么样deepseqletcase陈述?unsafePerformIODebug.Trace?顶级定义?严格的数据类型?邦模式?等等.这些项目中有多少只能用seq或模式匹配来描述?

haskell language-design lazy-evaluation strictness

88
推荐指数
5
解决办法
5437
查看次数

懒惰I/O有什么坏处?

我一般都听说生产代码应该避免使用Lazy I/O. 我的问题是,为什么?是否可以在懒散的I/O之外使用它?什么使替代品(例如调查员)更好?

io haskell lazy-evaluation

86
推荐指数
5
解决办法
9868
查看次数

Haskell:为什么命名辅助函数的约定"go"?

go在阅读Haskell材料或源代码时看到了很多,但我从来没有对它感到很自在 - (我想它在我的脑海中有"goto"的负面含义).我开始用LYAH学习Haskell,这就是我选择使用accstep写折叠时的倾向.写作的惯例go来自哪里?

最重要的是,该名称到底go意味着什么?

haskell naming-conventions

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

Haskell奇怪的种类:种类( - >)是?? - >? - >*

当我尝试Haskell种类,并试图获得那种->,并且这出现了:

$ ghci
...
Prelude> :k (->)
(->) :: ?? -> ? -> *
Prelude> 
Run Code Online (Sandbox Code Playgroud)

而不是预期的* -> * -> *.有什么???事情?它们是指具体类型还是"实物变量"?或者是其他东西?

haskell types type-systems

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

为什么Python套件不可以连接?

我偶然发现了一篇博文,详细介绍了如何在Python中实现powerset函数.所以我开始尝试自己的方式,并发现Python显然不能有一组集合,因为set不可清除.这是令人厌烦的,因为powerset的定义是它是一组集合,我想使用实际的集合操作来实现它.

>>> set([ set() ])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'set'
Run Code Online (Sandbox Code Playgroud)

有没有一个很好的理由Python设置不可用?

python hash set

59
推荐指数
4
解决办法
3万
查看次数

为n维网格类型编写cojoin或cobind

使用类型级自然的典型定义,我已经定义了一个n维网格.

{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE TypeFamilies #-}

data Nat = Z | S Nat

data U (n :: Nat) x where
  Point :: x -> U Z x
  Dimension :: [U n x] -> U n x -> [U n x] -> U (S n) x

dmap :: (U n x -> U m r) -> U (S n) x -> U (S m) r
dmap f (Dimension ls mid …
Run Code Online (Sandbox Code Playgroud)

haskell comonad

56
推荐指数
2
解决办法
4142
查看次数