Tôi đang nghiên cứu các vấn đề về đồ chơi để giúp tôi đồng hóa ý tưởng kết hợp mẫu trong Mathematica. Các mã sau đây không hành xử như tôi mong đợi, và tôi không thể tìm ra những gì là sai với sự hiểu biết của tôi về PatternTest.Một hành vi không mong muốn của PatternTest trong Mathematica
MatchQ[{2, 1, 2, 5}, {x__?(FromDigits[{#}] > 3 &), y__}]
tôi mong đợi đoạn mã này để kiểm tra xem danh sách {2,1,2,5}
có thể được viết như hai liên tiếp (không rỗng) trình tự như vậy mà số nguyên chúng tôi nhận được từ các chuỗi đầu tiên lớn hơn 3. Kể từ {Sequence[2,1],Sequence[2,5]}
là một cách để viết lại danh sách như vậy mà giữ FromDigits[{2,1}] > 3
, tôi mong đợi mã đó trả về giá trị True
. Tuy nhiên, đó không phải là trường hợp.
Điều gì sai với cách diễn giải mã của tôi?
Đó là thật nhanh! +1 –
@Leonid: Sức mạnh của sự trì hoãn không biết giới hạn! – Simon
Tôi nghĩ rằng phản ứng đã được viết nhanh hơn tôi đặt cùng một bình luận, gần như cùng một lúc. –