Powodem, dla którego uzyskujesz Int
zamiast List
jest to, że s
jest strumieniem liczb całkowitych, więc zawiera liczby całkowite, a nie listy.
Powodem, dla którego otrzymujesz 3 jest to, że ogon (1,2,3,4,5, ...) (tj. s
) to (2,3,4,5, ...), a jeśli zamapujesz +1 na to, otrzymasz (3,4,5,6,7, ...), a główka tego jest 3.
Powodem, dla którego drukowana jest tylko jedna liczba całkowita, jest wyrażenie oceniane tylko raz, aby uzyskać strumień dla ogona. Następnie oceniany jest tylko strumień zwracany przez s.tail.map(_+1)
(który nie zawiera żadnych instrukcji drukowania).
Dlaczego miałbyś oczekiwać, że 'x.head' zwróci listę? – sepp2k
Co mnie martwi to dlaczego na ziemi chcesz umieścić 'println' w definicji leniwe val. –
@Dan: Aby dowiedzieć się, kiedy i jak często będzie wykonywane wyrażenie (i jakie będą różne wartości, kiedy to nastąpi), wyobrażam sobie. – sepp2k