目前正在制作2023 年代码降临第 8 天的第二部分。我正在尝试以下解决方案:
main = readFile "8.txt" >>= print . proc . lines
proc (ds:_:xs) = step 1 ds m as ds where
m = (foldl' parse) M.empty xs
as = map (\x -> ((m ! x), False)) $ filter (\x -> (last x) == 'A') $ M.keys m
parse m s = M.insert n (l,r) m where
(n, ns) = splitAt 3 s
(l, ls) = splitAt 3 $ drop 4 ns
r = take 3 …Run Code Online (Sandbox Code Playgroud) 因此,以最简化的形式,我正在进行类似的事情,
template <class T>
bool f(const T &a, const T &b, std::function<bool(const T&, const T&)> func)
{
return func(a,b);
}
template <class T>
bool g(const T &a, const T &b)
{
return true;
}
Run Code Online (Sandbox Code Playgroud)
但是,任何试图调用f(),任何事情,f('a', 'b', g),f(1, 2, g),结果总是在,无论我是否通过变量为const引用或只是简单的值或任何“呼叫到‘F’没有匹配功能”。我以为它无法推断出某些模板,但是我不知道在哪里或为什么。
我承认,我对如何使用函数对象有一个非常脆弱的把握,这样做是否可能?
转发通知,这是我Haskell的第一天.
所以我有一个函数parse :: String -> String,我试图通过标准传递一个文件,
input <- readFile "input.txt"
Run Code Online (Sandbox Code Playgroud)
或其他标准,
handle <- openFile "input.txt" ReadMode
input <- hGetContents handle
Run Code Online (Sandbox Code Playgroud)
我想要表演的,
output <- unlines $ map parse $ lines input
Run Code Online (Sandbox Code Playgroud)
(或者应该是规范格式化的)
现在我理解它,readFile返回一个字符串,lines接受一个字符串并返回一个字符串列表,map应该映射一个字符串列表.如果这是真的,那么为什么lines input告诉我有一个[String]而不是String,而省略lines并map parse input告诉我它有一个String而不是[String]?