小编sja*_*obi的帖子

printf一个字符串列表

我有以下代码可以格式化电话号码.(printf来自Text.Printf,splitPlaces来自Data.List.Split).

prettyPrint :: String -> String
prettyPrint phoneNumber = printf "(%s) %s-%s" part1 part2 part3
  where [part1, part2, part3] = splitPlaces [3, 3, 4] phoneNumber
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是一个允许以下方式编写函数的运算符:

prettyPrint = printf "(%s) %s-%s" <operator> splitPlaces [3, 3, 4]
Run Code Online (Sandbox Code Playgroud)

这样的运营商是否存在?它可以存在吗?

haskell string-formatting pointfree

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

如何使用stack/cabal顺序构建每个haskell包?

我正在尝试调试一些编译问题,我想知道是否可以使用非交错构建步骤,如此处所示.

$ stack build
string-conv-0.1: configure
string-conv-0.1: build
dotnet-timespan-0.0.1.0: configure
dotnet-timespan-0.0.1.0: build
servant-0.7: configure
string-conv-0.1: copy/register
dotnet-timespan-0.0.1.0: copy/register
servant-0.7: build
control-monad-omega-0.3.1: configure
control-monad-omega-0.3.1: build
swagger2-2.0.1: configure
control-monad-omega-0.3.1: copy/register
swagger2-2.0.1: build
eventstore-0.12.0.0: configure
eventstore-0.12.0.0: build
servant-0.7: copy/register
servant-client-0.7: configure
servant-client-0.7: build
servant-docs-0.7: configure
servant-docs-0.7: build
servant-client-0.7: copy/register
servant-server-0.7: configure
servant-server-0.7: build
servant-server-0.7: copy/register
servant-docs-0.7: copy/register
swagger2-2.0.1: copy/register
servant-swagger-1.0.3: configure
servant-swagger-1.0.3: build
servant-swagger-1.0.3: copy/register
eventstore-0.12.0.0: copy/register
pl-cqrs-0.1.0.0: configure
pl-cqrs-0.1.0.0: build
pl-cqrs-0.1.0.0: copy/register
pl-server-0.1.0.0: configure
pl-server-0.1.0.0: build
pl-server-0.1.0.0: copy/register
pl-wrapper-0.0.0: configure
pl-wrapper-0.0.0: build …
Run Code Online (Sandbox Code Playgroud)

haskell cabal haskell-stack

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

Markage使用哪种方法来管理自述文件?

Hackage已经能够显示Markdown自述文件一段时间了.

但是正如人们可以在Hackage页面hpack上看到的那样,Hackage似乎不支持与GitHub相同的表语法.

降价:

#### <a name="flags"></a>Flags

| Hpack | Cabal | Default | Notes |
| --- | --- | --- | --- |
| `description` | `description` | | Optional |
| `manual` | `manual` | | Required (unlike Cabal) |
| `default` | `default` | | Required (unlike Cabal) |
Run Code Online (Sandbox Code Playgroud)

在GitHub上呈现:

在此输入图像描述

在Hackage上呈现:

在此输入图像描述

所以,我想知道:

  • Hackage支持哪种Markdown方言?
  • 该方言中的表有语法吗?
  • 是否有GitHub和Hackage支持的Markdown子集中的表的语法?

markdown haskell hackage github-flavored-markdown

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

setup:程序'pg_config'是必需的但无法找到

在nixos上,当试图用我的项目构建时$ stack --nix build,我遇到了以下错误.

$ stack --nix build

...

Linking /run/user/1000/stack25943/postgresql-libpq-0.9.2.0/.stack-work/dist/x86_64-linux-nix/Cabal-1.24.2.0/setup/setup ...
Configuring postgresql-libpq-0.9.2.0...
setup: The program 'pg_config' is required but it could not be found.
Run Code Online (Sandbox Code Playgroud)

我已经按照nixos手册安装了postgres 并且已经pg_config安装了,如图所示

$ which pg_config
/run/current-system/sw/bin/pg_config
Run Code Online (Sandbox Code Playgroud)

看来堆栈不知道我的pg_config的这个位置.

我如何继续取得$ stack --nix build成功?

postgresql nixos haskell-stack

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

Haskell错误变量不在范围内

我编写了一个非常基本的递归函数,但是当我尝试使用它时,Haskell给了我一个错误.

这是代码:

import Data.Char
import Test.QuickCheck
potencia :: Integer -> Integer -> Integer
potencia x 0 = 1
potencia x n = x*(potencia x (n-1))
Run Code Online (Sandbox Code Playgroud)

这是错误:

<interactive>:27:1-8: error:
    Variable not in scope: potencia :: Integer -> Integer -> t
Run Code Online (Sandbox Code Playgroud)

如果我删除了libreries的导入,它不再给我错误,但我以后需要它们.我正在使用haskell平台的最新更新和emacs编辑器.谢谢.

emacs haskell

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

如何使用 nix 在堆栈中传递自定义环境变量(如密码)?

我在 nix 中使用堆栈。我需要将环境变量作为数据库密码传递以在运行时连接到 Postgres。目前,我在 YAML 中启用了 nix 并自定义了自己.nix的密码以将密码放入.nix.

堆栈.yaml:

nix:
  enable: true
  pure: true
  shell-file: shell.nix
Run Code Online (Sandbox Code Playgroud)

shell.nix:

{ghc}:
with (import <nixpkgs> {});

haskell.lib.buildStackProject {
  inherit ghc;
  name = "myenv";
  buildInputs = [ postgresql_10 ];
  PGPASSWORD = "pw";
}
Run Code Online (Sandbox Code Playgroud)

但是当我想将代码提交到 GitHub/Gitlab 并转到 CI/CD 管道时,显式输入密码.nix似乎不太好。我想知道有什么好的方法可以解决这个问题吗?

haskell nix haskell-stack

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

从 Haskell 的列表中随机选择一个元素

我的代码旨在创建一个单词搜索难题。有一个叫做 Orientation 的数据表示拼图中每个单词的方向。

data Orientation =
  Forward | Back | Up | Down | UpForward | UpBack | DownForward | DownBack
  deriving (Eq, Ord, Show, Read)
Run Code Online (Sandbox Code Playgroud)

现在给定一个字符串输入[String],我想随机分配每个字符串的方向,例如[(Orientation, String)]

assignWordDir :: [String] -> [(Orientation, String)]
assignWordDir [] = []
assignWordDir (s:strs) = (ori, s) : assignWordDir
                        where ori = pickOri [Forward, Back, Up, Down, UpForward, UpBack, DownForward, DownBack]

pickOri :: [a] -> IO a
pickOri xs = do
  i <- randomRIO (0, len)
  pure $ xs !! i …
Run Code Online (Sandbox Code Playgroud)

haskell

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

应用消失?

pure我对其 Applicative 实例未指定的情况下的行为有点困惑。在此示例中,我希望在应用上下文中结果值为数字 5:

Prelude> pure 5 :: Applicative t => t Integer
5
Prelude> :t it
it :: Integer
Run Code Online (Sandbox Code Playgroud)

相反,它只是一个普通的整数。

如果指定了应用实例,如以下示例所示,则返回的值是应用类型,正如我所期望的:

Prelude> pure 5 :: Maybe Integer
Just 5
Prelude> :t it
it :: Maybe Integer
Run Code Online (Sandbox Code Playgroud)

为什么Applicative t第一个例子中的 似乎消失了?

似乎未指定的应用上下文被剥离以用于最终评估以打印到输出,但我想知道这的规则是什么。

haskell ghci

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

Java 相当于 struct.unpack('d', s.decode('hex'))[0]

我正在读取一个存储二进制文件的文件。在 python 中我可以轻松解码文件

>>> s = '0000000000A0A240'
>>> s.decode('hex')
'\x00\x00\x00\x00\x00\xa0\xa2@'
>>> import struct
>>> struct.unpack('d', s.decode('hex'))[0]
2384.0
Run Code Online (Sandbox Code Playgroud)

现在我想用Java做同样的解码,我们有类似的东西吗?

python java binaryfiles

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

在haskell上递归的连续对

我有这个代码:

pairs :: [a] -> [(a,a)]
pairs [] = []
pairs xs = zip xs (tail xs)
Run Code Online (Sandbox Code Playgroud)

这段代码的作用的一个例子:

> pairs "hey"
[('h','e'),('e','y')]
> pairs [1..7]
[(1,2),(2,3),(3,4),(4,5),(5,6),(6,7)]
Run Code Online (Sandbox Code Playgroud)

我想知道如何以递归方式做到这一点。我试过这个,

pairs (x:xs) = (x,head xs): pairs xs
Run Code Online (Sandbox Code Playgroud)

但它因以下异常而失败

pairs :: [a] -> [(a,a)]
pairs [] = []
pairs xs = zip xs (tail xs)
Run Code Online (Sandbox Code Playgroud)

haskell

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