【问题标题】:How to display a word for a limited time in Haskell如何在 Haskell 中限时显示单词
【发布时间】:2015-03-09 05:56:21
【问题描述】:

我们是 Haskell 的超级初学者,正在为一个学校项目而苦苦挣扎。我们的目标是创建一个工作记忆测试。除了最后一块拼图,我们已经完成了一切。我们希望程序显示一个单词大约一秒钟,然后消失。然后我们希望对我们想要包含在测试中的所有 25 个单词重复 25 次。

我们一直在尝试使用 threadDelay 和 clearLine,但没有成功。非常感谢我们能得到的任何帮助,我们可以使用 HASKELL 中的某种神奇功能吗?

这是我们唯一需要解决的问题。

希望有人可以帮助我们。

/萨拉

这是目前为止的程序:

import Data.List

main :: IO Int
main =
 do
  putStrLn "Hej och välkommen! Du ska nu få testa ditt arbetsminne, i ett litet test. Du kommer få 25 ord presenterade för dig, ett åt gången. Du ska försöka komma ihåg så många ord som möjligt. När du känner dig redo, skriv ditt namn och tryck Enter." --Translation: Hello, this is a working memory test blablabla when ready print redo
  name <- getLine
  text <- readFile "ord.txt" 
  let ord = words text
  putStrLn "Vilka ord kommer du ihåg? Skriv ner de ord du kommer ihåg, med små bokstäver och mellanslag, utan kommatecken." --Translation: What words do you remember
  s <- getLine
  let svar = words s
  let result1 = map (\x -> elem x ord) svar
  let result = filter (\x -> x == True) result1
  putStrLn (name ++ "! Av 25 ord kom du ihåg:") --Translation: Out of 25 words you remembered...
  return $ length result

我们想要在 "name

import System.Console.ANSI
import Control.Concurrent

main = do
 putStr "hej"
 threadDelay 3000000 ; clearLine
 putStr "bra jobbat"

我们一直在为 threadDelay 尝试不同的位置,但它并没有达到我们想要的效果。

【问题讨论】:

    标签: haskell


    【解决方案1】:

    在程序的输入和输出与呈现给用户的控制台之间存在一个操作系统缓冲区。正如answers to another question 中所解释的,IO 之类的操作,如putStr,写入控制台只会将数据发送到缓冲区;它们不一定强制操作系统“刷新”缓冲区并将数据发送给用户。如果您在程序运行时密切注意,您会看到前 3 秒没有显示任何内容,然后它直接跳转到"bra jobbat",而不会显示"hej""hej" 在等待之前被发送到缓冲区显示,但直到稍后才被刷新。您可以告诉操作系统使用来自System.IOhflush 刷新缓冲区。您需要为标准输出刷新缓冲区,stdout

    import System.Console.ANSI
    import Control.Concurrent
    import System.IO
    
    main = do
     putStr "hej"
     hFlush stdout
     threadDelay 3000000 ; clearLine
     putStr "bra jobbat"
     hFlush stdout
    

    【讨论】:

      猜你喜欢
      • 2013-04-13
      • 1970-01-01
      • 1970-01-01
      • 2018-06-16
      • 2020-10-18
      • 1970-01-01
      • 1970-01-01
      • 2016-02-17
      • 1970-01-01
      相关资源
      最近更新 更多