我有一个运行的脚本curl.-H如果字符串不为空,我希望能够选择添加参数.引用和空格的级别有多复杂.
caption="Test Caption"
if [ "${caption}" != "" ]; then
CAPT=-H "X-Caption: ${caption}"
fi
curl -A "$UA" -H "Content-MD5: $MD5" -H "X-SessionID: $SID" -H "X-Version: 1" $CAPT http://upload.example.com/$FN
Run Code Online (Sandbox Code Playgroud)
这个想法是CAPT变量为空,或者包含与其他变量相同形式的所需-H头,例如, -H "X-Caption: Test Caption"
问题是在运行时,它将赋值解释为要执行的命令:
$bash -x -v test.sh
+ '[' 'Test caption' '!=' '' ']'
+ CAPT=-H
+ 'X-Caption: Test caption'
./test.sh: line 273: X-Caption: Test caption: command not found
Run Code Online (Sandbox Code Playgroud)
我已经尝试在代码之前重置IFS,但它没有什么区别.
有一个F#等价的Haskell scanl/ scanr?这些函数执行折叠,但它们以列表的形式报告所有中间累加器状态.
最近我有一个字符串列表,需要独立遍历每个字符串并执行一些IO功能.
所以我基本上就是这样:
goOverList :: [String] -> IO ()
goOverList (x:[]) = do
putStrLn x
goOverList (x:xs) = do
goOverList [x]
goOverList xs
main = do
let myList = ["first", "second", "third"]
goOverList myList
Run Code Online (Sandbox Code Playgroud)
我IO有点复杂,但这是它的要点(需要有一个功能超过列表,并IO根据列表成员做)我希望有人可以告诉我如何更好地做到这一点.
我正在尝试编写一个返回给定数字下所有素数列表的过程.
例如:
Prelude>primes 8
[2,3,5,7]
Run Code Online (Sandbox Code Playgroud)
当我尝试加载文件时,Parse error in pattern Failed, modules loaded: none.如果有人能指出我正确的方向,我将不胜感激.
primes :: Int -> [Int]
primes x < 2 = []
primes x | isPrime x == True = primes (x - 1) ++ x
| otherwise = primes (x - 1)
isPrime :: Int -> Bool
isPrime x | x < 2 = False
| x == 2 || x == 3 = True
| divEven x == True = False
| divOdd x …Run Code Online (Sandbox Code Playgroud) 我刚刚开始使用monad,我无法弄清楚为什么这两个表达式的评估方式不同:
ghci> [1,2] >>= \n -> ['a','b'] >>= \ch -> return (n,ch)
[(1,'a'),(1,'b'),(2,'a'),(2,'b')]
ghci> return ([1,2],['a','b'])
([1,2],"ab")
Run Code Online (Sandbox Code Playgroud) 我正在对我的程序中的类型进行原型设计和处理,我目前只ghc --make在想要进行类型检查时使用.但是,此命令还花费时间编译和链接我不需要的实际可执行文件.是否有一些我可以传递的标志ghc告诉它只做类型检查?
假设我有几个功能:
func1 : A => B
func2: B => C
func3: C => D
Run Code Online (Sandbox Code Playgroud)
我想在需要时以通用方式协调功能。
假设我需要从转换为A,然后B致电func1。但是,当我需要从转换为时A,D我希望将这些功能组合在一起。这样的事情在动态的观念中可能吗?
假设有一个数据结构表示带有注释的文本.
data TWC
= T Text TWC -- text
| C Text TWC -- comment
| E -- end
deriving Show
Run Code Online (Sandbox Code Playgroud)
因此字符串就像
"Text, {-comment-}, and something else"
Run Code Online (Sandbox Code Playgroud)
可编码为
T "Text, " (C "comment" (T ", and something else" E))
Run Code Online (Sandbox Code Playgroud)
用于评论chunk和for的解析器E非常简单:
twcP :: Parser TWC
twcP = eP <|> cP <|> tP
cP :: Parser TWC
cP = do
_ <- string "{-"
c <- manyTill anyChar (string "-}")
rest <- cP <|> tP <|> eP
return (C (pack …Run Code Online (Sandbox Code Playgroud) 我想转换[z,z,a,z,z,a,a,z]为[{z,2},{a,1},{z,2},{a,2},{z,1}].我该怎么做?
所以,我需要积累前一个值,它的计数器和元组列表.
我创造了纪录
-record(acc, {previous, counter, tuples}).
Run Code Online (Sandbox Code Playgroud)
重新定义
listToTuples([]) -> [];
listToTuples([H | Tail]) ->
Acc = #acc{previous=H, counter=1},
listToTuples([Tail], Acc).
Run Code Online (Sandbox Code Playgroud)
但后来我遇到了麻烦
listToTuples([H | Tail], Acc) ->
case H == Acc#acc.previous of
true ->
false ->
end.
Run Code Online (Sandbox Code Playgroud) 例如我有数组:
$arr = array('a', 'b', 'c', 'd', 'e', 'f');
Run Code Online (Sandbox Code Playgroud)
如何('a', 'b', 'c')从阵列中删除?