^-- Не, не е съвсем. Въпросът ми обхваща ДОБАВЯНЕТО на шаблони и подписи за въвеждане интерактивно...което очевидно е невъзможно.
Най-основните неща, които можете да опитате да направите от ранните уроци, няма да работят в GHCi:
foo [] = []
foo (x:xs) = x : foo xs
Това работи, ако го поставите в foo.hs
и в подканата GHCi въведете :load foo.hs
. След това можете да извикате foo в списък и да върнете списъка обратно.
Ранните търсения в Google ви казват, че в GHCi имате нужда от let
изявление. Но в този случай (функция, дефинирана с множество шаблони) няма да работи:
Prelude> let foo [] = []
Prelude> let foo (x:xs) = x : foo xs
Prelude> foo [1, 2, 3]
[1,2,3*** Exception: <interactive>:3:5-27: Non-exhaustive patterns
in function foo
Второто "нека" замени първото "нека". Изоставянето на let не е опция. И не му харесва, ако въвеждате изрази като foo :: [a] -> [a]
.
Уроците изглежда заобикалят това и ви изпращат бързо да поставите кода си във файлове. Ами ако не искате да правите файл и искате да работите интерактивно? Какви са вариантите?