Причина, по которой вы получаете Int
вместо List
, состоит в том, что s
представляет собой поток целых чисел, поэтому он содержит целые числа, а не списки.
Причина, по которой вы получаете 3, состоит в том, что хвост (1,2,3,4,5, ...) (то есть s
) равен (2,3,4,5, ...), и если вы нанесете +1 над этим, вы получите (3,4,5,6,7, ...), а голова - 3.
Причина, по которой печатается только одно целое, заключается в том, что выражение оценивается только один раз, чтобы получить поток для хвоста. После этого оценивается только поток, возвращаемый s.tail.map(_+1)
(который не содержит никаких заявлений печати).
Почему вы ожидаете, что 'x.head' вернет список? – sepp2k
Что меня смущает, почему вы хотите поставить 'println' в определение ленивого val. –
@Dan: Чтобы узнать, когда и как часто будет выполняться выражение (и какими будут различные значения, когда это произойдет), я полагаю. – sepp2k