小编m3k*_*k_1的帖子

如何在 Haskell 中执行递归主函数

所以我想制作一个打印出 ASCII 三角形的程序。程序会询问您希望三角形的高度并将其打印出来,直到您输入的数字为7为止,然后绘制高度为 7 的三角形,程序停止。如果数字是偶数,则打印出的三角形由“*”组成,如果数字是奇数,则由“#”组成。我想通过递归调用main函数来做到这一点

triangle level character = draw level character 1 
      where draw level character accumulator
             | level <=0 = putStr("")
             | level > 0 = do 
                 putStrLn (replicate level ' ' ++ replicate accumulator character)
                 draw (level-1) character (accumulator+2)

main = do
    number <- readLn :: IO Int
    if(number `mod` 2 == 0)
      then
        triangle number'*'
        main 
     else if (number == 7)
       then triangle number '#'
       else triangle number '#'
       main
Run Code Online (Sandbox Code Playgroud)

我得到的错误是

• …
Run Code Online (Sandbox Code Playgroud)

recursion haskell

3
推荐指数
2
解决办法
105
查看次数

如何使用 useState 打乱嵌套数组

我正在用 React Native 制作一个测验应用程序,我想在每次有人选择测验时打乱问题的顺序 。我正在考虑使用lodash中的shuffle,但我不完全确定如何处理嵌套数组。

const getTest = async () => {

     try {
        const response = await fetch('https://tgryl.pl/quiz/test/'.concat(route.params.testId));
        const json = await response.json();
        setData(json);
     }
     catch (error) {
          console.error(error);
     } 
}
Run Code Online (Sandbox Code Playgroud)

我在想类似的事情setData(_.shuffle(data.tasks))?我不知道

JSON 看起来像这样

在此输入图像描述

javascript lodash react-native

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

如何编写将元素插入排序列表的 Haskell 函数

我尝试过这样的事情,但它不起作用我想要它做什么。我是 Haskell 的新手,我真的不知道该怎么做,还有什么问题。

 insert a (x:xs) = insert2 a (x:xs) []
            where insert2 el (x:xs) hd =
                    if (x:xs) == [] 
                        then []
                    else if ( a>=x && a < head(xs)) 
                        then hd ++ [x] ++ [a] ++ xs
                    else insert2 a xs hd++[x]
     
    main = do
        let list =[1 ,2 ,3 ,4 ,5 ,6]
        let out = insert 2 list
        print out
Run Code Online (Sandbox Code Playgroud)

我得到的输出是 [2,2,3,4,5,6,1]

haskell list concatenation

0
推荐指数
2
解决办法
94
查看次数