Giả sử tôi có một chuỗi nơi tôi biết điểm bắt đầu và điểm kết thúc và trình tạo là đơn giản. Tôi có thể làm cho nó lười biếng?Danh sách hữu hạn có thể lười biếng trong Perl 6 không?
my @b = 0 ... 3;
say 'Is @b lazy? ' ~ @b.is-lazy; # Not lazy
Tôi muốn kết hợp danh sách đã biết với chính nó một số lần không xác định nhưng không tạo toàn bộ danh sách ngay lập tức. Tôi muốn @cross
để được lười biếng:
my @cross = [X] @b xx $n;
Tôi biết tôi có thể làm được điều này thông qua các vấn đề khác đơn giản hoặc lập trình (và Perl tôi 5 Set::CrossProduct không chỉ đó), nhưng tôi tò mò nếu có một số cách đơn giản và có ý định mà tôi đang thiếu. Một số cách không liên quan đến việc tôi tự tính.
Là câu hỏi phụ, tính năng của chuỗi làm cho nó trở nên lười biếng là gì? Nó chỉ là điểm cuối? Có một chuỗi với một điểm cuối được biết đến mà vẫn có thể được lười biếng nếu máy phát điện có thể làm cho các giá trị vô hạn giữa? Tôi tự hỏi có bao nhiêu thông tin tôi phải xóa và thử một cái gì đó như thế này:
my $m = @*ARGS[0];
my @b = 0, * + $m ...^* > 3;
say 'Is @b lazy? ' ~ @b.is-lazy;
say '@b: ' ~ @b;
Tuy nhiên, điều này không phải là lười biếng.
Huh. Tôi chắc rằng tôi đã thử điều đó. Cảm ơn! –