考虑清单
[[],[1],[1,2],[1,2,3],[],[2],[2,3],[],[3],[]]
Run Code Online (Sandbox Code Playgroud)
我想过滤掉所有非空列表的元素,即过滤后的输出应该给我一个结果,如:
[[1],[1,2],[1,2,3],[2],[2,3],[3]]
Run Code Online (Sandbox Code Playgroud)
以下代码失败:
myfilter lst = filter(\x -> x/=[]) lst
Run Code Online (Sandbox Code Playgroud)
[12,3,[]]出现以下错误
No instance for (Num [a])
arising from the literal `3' at <interactive>:1:13
Possible fix: add an instance declaration for (Num [a])
In the expression: 3
In the first argument of `myfilter', namely `[12, 3, []]'
In the expression: myfilter [12, 3, []]
Run Code Online (Sandbox Code Playgroud) 我安装了Haskell Platform 2012.4.0.0,我想尝试使用单元包.
当我尝试安装它时,cabal-dev -s some-dir install unittyped我收到错误:
$ cabal-dev -s some-dir install unittyped
Resolving dependencies...
cabal: Could not resolve dependencies:
trying: unittyped-0.1 (user goal)
next goal: base (dependency of unittyped-0.1)
rejecting: base-3.0.3.2, 3.0.3.1 (global constraint requires installed
instance)
rejecting: base-4.5.1.0/installed-724... (conflict: unittyped => base>=4.6 && <4.7)
rejecting: base-4.6.0.0, 4.5.1.0, 4.5.0.0, 4.4.1.0, 4.4.0.0, 4.3.1.0, 4.3.0.0,
4.2.0.2, 4.2.0.1, 4.2.0.0, 4.1.0.0, 4.0.0.0 (global constraint requires installed instance)
Run Code Online (Sandbox Code Playgroud)
并cabal-dev -s some-dir install base-4.6.0.0产生类似的信息.
有没有办法克服这些错误?
我一直在接受这个消息,我做错了什么?
data Pile a = Pile [a] deriving (Show,Eq,Ord)
flpile:: (Eq a, Eq b, Eq c) => Pile (a,(b,c))-> Pile (a,b,c)
flpile (Pile (a,(b,c)) = Pile [asocr (a,(b,c))]
asocr :: (a,(b,c)) -> (a,b,c)
asocr (a,(b,c)) = (a,b,c)
Run Code Online (Sandbox Code Playgroud) 我刚刚开始使用Haskell进行编程,并希望进行String转换.我有一个任意的字符串,例如"abcd \n dad"我想删除左侧和右侧的空格字符.我想消除多个空格以及转义序列"\n" - >""
所以上面的字符串看起来像这个"abcd爸爸"
我已经编写了一个修剪String的函数并删除了空格字符(如果isSpace为true,我将删除该字符):
trim :: [Char] -> [Char]
trim x = dropWhileEnd isSpace (dropWhile isSpace x)
Run Code Online (Sandbox Code Playgroud)
现在我的想法是在输入String上进行模式匹配.但是如何将trim函数直接应用于输入?所以一开始我想修剪两端的String,然后应用模式匹配.因此,我唯一需要做的就是比较两个字符,如果两个字符都是空白字符,则删除一个字符
--How do I apply trim directly to the input
s :: [Char] -> [Char]
s [x] = [x]
s(x:xx) = ...
Run Code Online (Sandbox Code Playgroud)
注意:效率并不重要.我想学习模式匹配的概念,并了解Haskell的工作原理.
干杯
我正在Haskell中制作一个基于命令行的游戏,并且需要将字符串制作成某种颜色.我是Haskell的新手,但昨晚我做了一个游戏.如果可能的话,我基本上需要将"欢迎使用Haskell猜测游戏"的非彩色字符串更改为不同颜色的字符串.
谢谢!
我正在尝试在 Windows 服务器上运行小鸭(https://github.com/facebook/duckling)。
不幸的是,服务器只能访问内网,不能访问互联网。我如何设置 Haskell 以便能够在没有互联网访问的情况下构建和运行包?
我试图在Haskell GHCi中声明一个函数为
fact :: Int -> Int
但我收到此错误- 错误: 在输入`->'上解析错误
我不明白为什么会这样。有人可以向我解释吗?谢谢。
compLetters :: Char -> Char -> Char
compLetters a b = chr (min (ord a ord b))
Run Code Online (Sandbox Code Playgroud)
我试图比较字符,看看哪一个出现在字母表中的第一位.我尝试使用上面的代码执行此操作但出现错误.任何帮助表示感谢,谢谢.
我想将R数据的种类定义为有理数,其中R是(分母,分子),我定义为:
data R = R {n::Int,
d::Int} deriving Show
Run Code Online (Sandbox Code Playgroud)
现在我尝试做一个函数给出两个参数(一个R和一个R的列表)并返回一个等价为R的列表.我试试这个,但给我一个类型的错误.
equivalentes' :: [R] -> R -> [R]
equivalentes' [] _ = []
equivalentes' (x:xs) r
| (n x `mod` n r == 0) && (d x `mod` d r == 0) = (R(d n)x): equivalentes' xs r
| otherwise = equivalentes' xs r
Run Code Online (Sandbox Code Playgroud)
我的想法是返回这样的东西:
> equivalentes'[R(2,4),R(3,5),R(4,8)] (R(1,2))
[R (2,4),R (4,8)]
Run Code Online (Sandbox Code Playgroud) 试图用Haskell构建一个简单的库。它工作了一次,然后停止了工作(很奇怪)
仅运行了几个命令,只有库的简单cabal init
然后添加了以下库
问候
module Greet where
greeet s = "Hey, " ++ s
Run Code Online (Sandbox Code Playgroud)
然后运行cabal new-build,然后运行cabal new-repl
错误如下
Build profile: -w ghc-8.6.3 -O1
In order, the following will be built (use -v for more details):
- HaskellTry-0.1.0.0 (lib) (ephemeral targets)
Preprocessing library for HaskellTry-0.1.0.0..
GHCi, version 8.6.3: http://www.haskell.org/ghc/ :? for help
Ok, one module loaded.
Prelude Greet> greeet "h"
"
Run Code Online (Sandbox Code Playgroud)
在那之后一切都停滞了。