我有以下代码可以格式化电话号码.(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)
这样的运营商是否存在?它可以存在吗?
我正在尝试调试一些编译问题,我想知道是否可以使用非交错构建步骤,如此处所示.
$ 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) 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)
所以,我想知道:
在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成功?
我编写了一个非常基本的递归函数,但是当我尝试使用它时,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编辑器.谢谢.
我在 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似乎不太好。我想知道有什么好的方法可以解决这个问题吗?
我的代码旨在创建一个单词搜索难题。有一个叫做 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) 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第一个例子中的 似乎消失了?
似乎未指定的应用上下文被剥离以用于最终评估以打印到输出,但我想知道这的规则是什么。
我正在读取一个存储二进制文件的文件。在 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做同样的解码,我们有类似的东西吗?
我有这个代码:
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)