gpt4 book ai didi

string - 为什么这个 Haskell 程序会产生反斜杠?

转载 作者:行者123 更新时间:2023-12-02 02:21:20 25 4
gpt4 key购买 nike

我是 Haskell 的新手,写了这个程序来练习函数式编程。我不知道它是否是一个好程序,除了两件事。

  • 它有效(它向我展示了 Collat​​z 树中从 6 到 1 的路径)
  • 它打印了太多的反斜杠

  • next_step :: Integer -> Integer
    collatz :: Integer -> String

    next_step n = do
    if (n `mod` 2) == 0 then
    n `div` 2
    else
    (n * 3) + 1

    collatz 1 = "1"
    collatz n = (show n) ++ " -> " ++ (show (collatz (next_step n)))

    main = putStrLn (collatz 6)
    输出:
    6 -> "3 -> \"10 -> \\\"5 -> \\\\\\\"16 -> \\\\\\\\\\\\\\\"8 -> \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"4 -> \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"2 -> \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"1\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\"\\\\\\\"\\\"\""
    我希望反斜杠消失。

    最佳答案

    collatz已经返回一个字符串,所以你不需要调用 show在上面:

    collatz n = show(n) ++ " -> " ++ collatz (next_step n)
    使用 show添加引号,然后由于嵌套引号而导致反斜杠。

    关于string - 为什么这个 Haskell 程序会产生反斜杠?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63349652/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com