Всю жизнь. В школе с углубленным изучением отучился (родители тогда на поклон к кому то ходили, чтобы меня в блатную школу взяли). Потом в институте учил. А потом сам заставлял себя книги читать, фильмы смотреть, ролики с ютуба.
И результат всех моих жизне-часов примерно 7-8 тысяч слов запаса и весьма посредственное знание грамматики.
Так себе результат. Руки опускаются.
Ещё не освоил здешний интерфейс. Переформатировал код свего комментария
import System.IO
whenKeyIsPressed :: Handle -> IO a -> IO (Maybe a)
whenKeyIsPressed handle getCh = hReady handle >>= go
where go True = getCh >>= return . Just
go _ = return Nothing
main :: IO ()
main = do
hSetBuffering stdin NoBuffering
ch <- whenKeyIsPressed stdin getChar
case ch of
Just c -> putStrLn $ "Key pressed: " ++ [c]
Nothing -> return () -- putStrLn "Nothing is pressed"
main<b></b>
Можно и без параллеьных потоков, используя функцию hReady
import System.IO
whenKeyIsPressed :: Handle -> IO a -> IO (Maybe a)
whenKeyIsPressed handle getCh = hReady handle >>= go
where go True = getCh >>= return. Just
go _ = return Nothing
main :: IO ()
main = do
hSetBuffering stdin NoBuffering
ch < — whenKeyIsPressed stdin getChar
case ch of
Just c -> putStrLn $ «Key pressed: » ++ [c]
Nothing -> return () — putStrLn «Nothing is pressed»
main
Графический интерфейс хорош, когда надо сделать делать какое то действие пару раз и забыть об этом. То, что приходится делать регулярно и по многу раз удобнее делать без ГУИ, консольными командами. Но подавляющее большинство Windows пользователей об этом не знают и продолжают тыкать мышкой одни и те же последовательности нажатий кнопок в ГУИ изо дня в день, долгими годами и даже десятилетиями.
Всю жизнь. В школе с углубленным изучением отучился (родители тогда на поклон к кому то ходили, чтобы меня в блатную школу взяли). Потом в институте учил. А потом сам заставлял себя книги читать, фильмы смотреть, ролики с ютуба.
И результат всех моих жизне-часов примерно 7-8 тысяч слов запаса и весьма посредственное знание грамматики.
Так себе результат. Руки опускаются.
А что за курс проходили, и как долго? Довольно впечатляющий уровень для человека, который просто прошел курс.
import System.IO
whenKeyIsPressed :: Handle -> IO a -> IO (Maybe a)
whenKeyIsPressed handle getCh = hReady handle >>= go
where go True = getCh >>= return. Just
go _ = return Nothing
main :: IO ()
main = do
hSetBuffering stdin NoBuffering
ch < — whenKeyIsPressed stdin getChar
case ch of
Just c -> putStrLn $ «Key pressed: » ++ [c]
Nothing -> return () — putStrLn «Nothing is pressed»
main