小编Nik*_*kov的帖子

Data.Text vs String

虽然Haskell社区的一般意见似乎总是更好地使用Text而不是String,大多数维护的库的API仍然是面向我的事实String混淆了我.另一方面,有一些值得注意的项目,它们String完全被视为一个错误,并提供了Prelude所有String面向函数的实例,这些函数被它们的Text-counterparts 取代.

那么String除了向后兼容的标准Prelude兼容性和"交换制作intertia"之外,人们还有任何理由继续使用面向编写的API吗?与之Text相比,是否还有其他缺点String

特别是,我对此感兴趣,因为我正在设计一个库并试图决定使用哪种类型来表达错误消息.

string text haskell

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

为什么Haskell中没有隐式并行性?

Haskell功能强大且纯粹,所以基本上它具有编译器能够处理隐式并行性所需的所有属性.

考虑这个简单的例子:

f = do
  a <- Just 1
  b <- Just $ Just 2
  -- ^ The above line does not utilize an `a` variable, so it can be safely
  -- executed in parallel with the preceding line
  c <- b
  -- ^ The above line references a `b` variable, so it can only be executed
  -- sequentially after it
  return (a, c)
  -- On the exit from a monad scope we wait for all computations to …
Run Code Online (Sandbox Code Playgroud)

parallel-processing concurrency haskell compiler-optimization

57
推荐指数
3
解决办法
4487
查看次数

将项添加到不可变的Seq

说,我有一个字符串序列作为输入,我想得到一个新的不可变Seq,它由输入元素和一个项目组成"c".以下是我发现的两种方法:

  1. assert(Seq("a", "b", "c") == Seq("a", "b") ++ Seq("c"))- 这个的问题是,似乎Seq("c")仅仅为了操作而实例化临时序列()是有害的并且将导致开销
  2. assert(Seq("a", "b", "c") == List("a", "b") ::: "c" :: Nil)- 这个将输入集合的类型限制为a List,因此Seq("a", "b") ::: "c" :: Nil不起作用.此外,似乎实例化a Nil也可能导致开销

我的问题是:

  1. 有没有其他方法来执行此操作?
  2. 哪一个更好?
  3. 是不是Seq("a", "b") ::: Nil不允许Scala开发人员的缺陷?

scala list seq

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

从字符串生成一个类并在Scala 2.10中实例化它

在Scala 2.10中如何从字符串生成一个类(可能使用Toolbox api)以后用Scala的反射进行实例化?

reflection scala toolbox scala-2.10

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

动态混合特征

有特点

trait Persisted {
  def id: Long
}
Run Code Online (Sandbox Code Playgroud)

如何实现一个接受任何case类实例的方法并返回其特征混合的副本?

该方法的签名如下:

def toPersisted[T](instance: T, id: Long): T with Persisted
Run Code Online (Sandbox Code Playgroud)

scala traits mixins case-class

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

将可变集合转换为不可变集合

我正在寻找一个转化的最佳途径collection.mutable.Seq[T]collection.immutable.Seq[T].

collections scala

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

懒惰与严格的数据结构实现

有一个具有惰性和严格实现的数据结构列表:

  • Data.Map.LazyData.Map.Strict
  • Data.IntMap.LazyData.IntMap.Strict
  • Data.HashMap.LazyData.HashMap.Strict
  • Data.ByteString.LazyData.ByteString.Strict
  • Data.Text.LazyData.Text

这些实施的优点和缺点是什么?选择特定实施时应遵循哪些规则?

containers haskell

30
推荐指数
2
解决办法
2029
查看次数

Scala字符串模式匹配最佳实践

我目前正在Scala中迈出第一步,所以我正在寻找解决常见问题的最佳实践.以下是不起作用的代码,但它描述了我想要做的事情.能否请您推荐解决此问题的最佳方法?

def resolveDriver(url: String) = {
  url match {
    case url.startsWith("jdbc:mysql:") => "com.mysql.jdbc.Driver"
    case url.startsWith("jdbc:postgresql:") => "org.postgresql.Driver"
    case url.startsWith("jdbc:h2:") => "org.h2.Driver"
    case url.startsWith("jdbc:hsqldb:") => "org.hsqldb.jdbcDriver"
    case _ => throw new IllegalArgumentException
  }
}
Run Code Online (Sandbox Code Playgroud)

scala pattern-matching

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

`Integer` vs`Int64` vs`Word64`

我有一些数据可以用无符号Integral类型表示,其最大值需要52位.仅限AFAIK Integer,Int64Word64满足这些要求.

我可以找到关于这些类型的所有信息Integer都是签名的并且具有浮动的无限位大小,Int64并且Word64分别是固定的,有符号和无符号的.我不知道的是有关这些类型的实际实施的信息:

  1. 如果存储为Integer?,52位值实际占用多少位?

  2. 我是否正确,Int64Word64允许您存储64位数据,并为任何值权重64位?

  3. 这些类型中的任何一种是否因大小等原因而更具性能或优先性,例如本机代码实现或直接处理器指令相关的优化?

  4. 以防万一:您建议将哪一个存储在一个对性能极为敏感的应用程序中的52位值?

haskell integer

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

从单个项目生成多个可执行文件

具有以下项目结构:

src/FirstExecutable.hs
src/SecondExecutable.hs
my-amazing-project.cabal
Run Code Online (Sandbox Code Playgroud)

和以下cabal设置:

name:               my-amazing-project
version:            0.1.0.0
build-type:         Simple
cabal-version:      >=1.8

executable first-executable
  hs-source-dirs:   src
  main-is:          FirstExecutable.hs
  ghc-options:      -O2 -threaded -with-rtsopts=-N
  build-depends:    base == 4.5.*

executable second-executable
  hs-source-dirs:   src
  main-is:          SecondExecutable.hs
  ghc-options:      -O2 -threaded -with-rtsopts=-N
  build-depends:    base == 4.5.*
Run Code Online (Sandbox Code Playgroud)

cabal install使用以下输出运行失败:

Installing executable(s) in
/Users/mojojojo/Library/Haskell/ghc-7.4.2/lib/my-amazing-project-0.1.0.0/bin
cabal: dist/build/second-executable/second-executable: does not exist
Failed to install my-amazing-project-0.1.0.0
cabal: Error: some packages failed to install:
my-amazing-project-0.1.0.0 failed during the final install step. The exception
was:
ExitFailure 1
Run Code Online (Sandbox Code Playgroud)

我做错了什么或者这是一个Cabal bug?


可执行模块的内容如下:

module …
Run Code Online (Sandbox Code Playgroud)

haskell cabal

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