小编Ari*_*rii的帖子

解决 Haskell 堆栈溢出

目前正在制作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)

stack-overflow haskell

5
推荐指数
1
解决办法
72
查看次数

在模板上使用std :: function

因此,以最简化的形式,我正在进行类似的事情,

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’没有匹配功能”。我以为它无法推断出某些模板,但是我不知道在哪里或为什么。

我承认,我对如何使用函数对象有一个非常脆弱的把握,这样做是否可能?

c++ templates std-function template-argument-deduction

4
推荐指数
1
解决办法
469
查看次数

Haskell文件I/O返回类型不匹配?

转发通知,这是我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,而省略linesmap parse input告诉我它有一个String而不是[String]?

haskell

1
推荐指数
1
解决办法
125
查看次数