2009-08-08 16 views
14

Wolfram Research đã có các tài liệu tương tự cho chức năng này cho 8 năm trở lại đây ít nhất:Ngữ nghĩa của chức năng Chủ đề của Mathematica, ai đó cần để cuối cùng đặt này để nghỉ ngơi

Thread[f[args]] 

"chủ đề" f trên bất kỳ danh sách xuất hiện trong args.

Định nghĩa vòng tròn đáng yêu nếu tôi từng thấy.

Có ai biết ngữ nghĩa thực sự là gì và có thể đưa ra lời giải thích thích hợp không phải là thông tư không?

Trả lời

11

Chủ đề giống như khái quát hóa zip từ các ngôn ngữ chức năng khác.

Đối với trường hợp đơn giản, nơi mà tất cả các yếu tố của args từ ví dụ của bạn là danh sách,

Thread[f[args]] 

tương đương với

f @@@ Transpose[{args}] 

như trong vài ví dụ đầu tiên trong tài liệu. Các nếp nhăn lớn là khi bạn có args không phải là danh sách, trong trường hợp đó họ đang có hiệu quả curried ra; ví dụ,

Thread[g[{a, b}, c, {d, e}, f]] 

tương đương với

g[#1, c, #2, f]& @@@ Transpose[{{a, b}, {d, e}}] 

Tôi thường thấy mình sử dụng chủ đề để xây dựng danh sách các quy tắc hoặc danh sách các phương trình.

14

Nó hoạt động tương tự như chức năng zip() của Python, nhưng theo kiểu tổng quát hơn một chút. Ví dụ:

In[1] := Thread[{{1, 2, 3}, {4, 5, 6}}] (* f == List *) 
Out[1] = {{1, 4}, {2, 5}, {3, 6}} 

In[2] := Thread[f[{1, 2, 3}, {4, 5, 6}]] 
Out[2] = {f[1, 4], f[2, 5], f[3, 6]} 

In[3] := Thread[f[a+b+c, d+e+f], Plus] 
Out[3] = f[a, d] + f[b, e] + f[c, f] 
Các vấn đề liên quan