-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathName.hs
46 lines (36 loc) · 2.52 KB
/
Name.hs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
{-
На этом шаге вы будете работать с монадой IO, а значит, ваша программа будет взаимодействовать с операционной системой.
Чтобы тестирующая система смогла оценить вашу программу, пожалуйста, используйте только функции, осуществляющие
ввод/вывод на терминал: getChar, putChar, putStr, putStrLn, getLine. Все эти функции уже будут находиться в области
видимости, так что вам не следует их импортировать. По той же причине, главная функция вашей программы будет называться
не main, а main' (со штрихом).
Напишите программу, которая будет спрашивать имя пользователя, а затем приветствовать его по имени. Причем, если
пользователь не ввёл имя, программа должна спросить его повторно, и продолжать спрашивать, до тех пор, пока
пользователь не представится.
Итак, первым делом, программа спрашивает имя:
What is your name?
Name:
Пользователь вводит имя и программа приветствует его:
What is your name?
Name: Valera
Hi, Valera!
Если же пользователь не ввёл имя, необходимо отобразить точно такое же приглашение ещё раз:
What is your name?
Name:
What is your name?
Name:
What is your name?
Name: Valera
Hi, Valera!
Пожалуйста, строго соблюдайте приведенный в примере формат вывода. Особое внимание уделите пробелам и переводам строк!
Не забудьте про пробел после Name:, а также про перевод строки в самом конце (ожидается, что вы будете использовать
putStrLn для вывода приветствия пользователя).
-}
main' :: IO ()
main' = do
putStrLn "What is your name?"
putStr "Name: "
name <- getLine
if name == ""
then main'
else putStrLn ("Hi, " ++ name ++ "!")