我的文件中有以下代码.zshrc。当我转到我的存储库时,git 分支名称不会显示在控制台的右侧,直到我使用以下命令获取 .zshrc 文件
源~/.zshrc
parse_git_branch() {
git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}
RPS1=`parse_git_branch`
Run Code Online (Sandbox Code Playgroud) 我想有第二颜色亮点的Vim,简约的方式做的就是使用:match,:2match或:3match命令:
:match TODO /pattern/
Run Code Online (Sandbox Code Playgroud)
TODO是亮点组;图案将像 一样突出显示':/'。
我很难弄清楚如何去除颜色。
这是非常简单的Haskell代码,用于查找满足毕达哥拉斯定理的1到200的所有毕达哥拉斯整数X ^ 2 = Y ^ 2 + Z ^ 2
哈斯克尔:
let l = [1..200]
let pythagoras = [ x | x <- l, y <- l, z <- l, x^2 == y^2 + z^2]
Run Code Online (Sandbox Code Playgroud)
完成它需要24.1秒,
Swift:使用标准循环 0.05秒
C:使用标准循环 0.022秒
我有以下Haskell功能
fun::Vertex3 GLfloat -> Vertex3 GLfloat -> Vertex3 GLfloat
fun (Vertex3 x0 y0 z0) (Vertex3 x1 y1 z1) = do sth here
where
p0 = (Vertex3 x0 y0 z0)
p1 = (Vertex3 x1 y1 z1)
p = p0 + p1
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种方法可以不在
(Vertex3 x0 y0 z0) (Vertex3 x1 y1 z1)代码中重复
我正在寻找一些东西:
fun::Vertex3 GLfloat -> Vertex3 GLfloat -> Vertex3 GLfloat
fun p0 p1 = do sth here
where
p0 = (Vertex3 x0 y0 z0)
p1 = (Vertex3 x1 y1 …Run Code Online (Sandbox Code Playgroud) 我尝试编写一个函数来检查两个向量是否相等:
Compare Vec1 [1, 2, 3] Vec1 [1, 2, 4]
Compare VecS ["a","b", "c"] VecS ["a", "b", "d"]
Run Code Online (Sandbox Code Playgroud)
但是,在我的功能上,我对两种情况都有"几乎"相同的实现,
有没有办法简化我的代码,以便它只有一个Integer和String实现
data MyVector = Vec1 [Integer] | VecS[String]
eqAssert::MyVector->MyVector->Bool
eqAssert (Vec1 []) (Vec1 []) = True
eqAssert (Vec1 _) (Vec1 []) = False
eqAssert (Vec1 (x:cx)) (Vec1 (y:cy)) =
if length (x:cx) /= length (y:cy)
then False
else (if x /= y then False else eqAssert (Vec1 cx) (Vec1 cy))
eqAssert (VecS []) (VecS []) = True
eqAssert (VecS …Run Code Online (Sandbox Code Playgroud) 我知道我可以使用join来删除第一级列表
join [["dog"]] "输出 ["dog"]
但为什么以下不起作用
join $ (Just ["dog"])
got error:
Couldn't match type ‘[]’ with ‘Maybe’
Run Code Online (Sandbox Code Playgroud)
我们知道Maybe并且[]都是Haskell的Monad,
join(Monad m)=> m(m a) -> m a
Run Code Online (Sandbox Code Playgroud)
Maybe 是Monad
[] 是Monad
这有什么问题?
在我看来,只为同一类型的Monad加入,如果我错了,请纠正我.
是否有任何类似于连接的函数,如上面给出的例子?
我知道我可以这样做
fromJust (Just ["dog"])
"output: ["dog"]
Run Code Online (Sandbox Code Playgroud)
但我需要提前知道.
给出一些字符串:"\begin","\end"或"\section"等.
我想用以下函数和正则表达式匹配它们:
matchTest (mkRegex '\\[:alnum:]+') "\begin"
Run Code Online (Sandbox Code Playgroud)
当我在GHCi中测试时,我总是得到False,
有没有人知道如何匹配模式"\begin"或类似"\end"等.
我想在地图中使用'head'功能.问题是'head'函数只接受非空列表.我有清单列表:
let ll =[["dog", "cat"], ["pig", "cow"], []]
Run Code Online (Sandbox Code Playgroud)
我需要两次迭代列表列表
let listOne = filter(\x -> if length x > 0) ll
map(\x -> head x) listOne
Run Code Online (Sandbox Code Playgroud)
我想知道我是否可以迭代列表列表一次或在地图中放入"if condition"而不使用'filter'
任何建议将不胜感激.
有什么办法可以像 shell 中的常规命令一样在命令行上运行 GHCi 吗?
例如: :browse in GHCi - 列出特定模块的所有功能。
但我想在 shell 上运行它,例如: ghci --browse "MyModule"
它列出了模块的所有功能
我知道 hoogle 可以在 shell 上运行它,例如:hoogle Monad
我想知道我们是否可以在函数外使用?例如
fun::Int->Int
fun n = n + 1
main = do
fun x where x = 30
Run Code Online (Sandbox Code Playgroud)
显然它在编译时不起作用,
我想将x声明为局部变量,仅 用于娱乐
class Functor f where
fmap :: (a -> b) -> f a -> f b
class (Functor f) => Applicative f where
pure a = f a
<*> :: f (a -> b) -> f a -> f b
Run Code Online (Sandbox Code Playgroud)
我试着理解Haskell中的Applicative从Applicative的定义来看,它看起来像Functor的子类
我假设fmap就像Functor的接口(在Java世界中)如果来自Functor的Applicative子类那么它需要从Functor实现fmap,但是Functor和Applicative中的fmap 在签名上是不同的
(a -> b) -> f a -> f b
f (a -> b) -> f a -> f b
Run Code Online (Sandbox Code Playgroud)
有谁能解释为什么?
我是Haskell的新手,想学习如何从Num类实现我的复数.
data Complex = Complex{x::Float, y::Float} deriving (Show)
instance Num Complex where
(Complex x1 y1) + (Complex x2 y2) = Complex(x1 + x2) (y1 + y2)
(Complex x1 y1) - (Complex x2 y2) = Complex(x1 - x2) (y1 - y2)
(Complex x1 y1) * (Complex x2 y2) = Complex(x1*x2 - y1*y2) (x1*y2 + x2*y2)
fromInteger n = Complex(fromInteger n) (fromInteger n)
signum (Complex x y) = Complex(signum x) (signum y)
abs (Complex x y) = Complex(abs x) (abs y)
Run Code Online (Sandbox Code Playgroud)
我的问题是如何使用 …