Xét các hàm generic đơn giản chỉ có một biến kiểu hình thức T. Khuôn tham số của hàm là một dãy k token, mỗi token thuộc một trong ba loại:
int, float, bool, string.T: đại diện biến kiểu, đối số tại vị trí này có thể là bất kỳ kiểu cơ sở nào trong {int,float,bool,string}, và ràng buộc T bằng đúng kiểu đó.T[]: đối số tại vị trí này bắt buộc có dạng mảng của một kiểu cơ sở X (viết X[], ví dụ int[]), và ràng buộc T=X.Cho một lời gọi với p kiểu đối số thực tế (đối số có thể là kiểu cơ sở hoặc kiểu mảng dạng X[]). Việc suy diễn không dùng bất kỳ luật ép kiểu nào — mọi vị trí phải khớp tuyệt đối theo mô tả trên. Tất cả các ràng buộc T=X xuất hiện (nếu có) phải cho ra cùng một X, nếu không sẽ mâu thuẫn.
Kết quả:
ERROR.OK.int, float, bool hoặc string).Dòng đầu là k — số token khuôn tham số. Dòng thứ hai gồm k token cách nhau bởi khoảng trắng (mỗi token ∈{int,float,bool,string,T,T[]}). Dòng tiếp theo là q — số lời gọi. q dòng tiếp theo, mỗi dòng dạng <p> <a1> ... <ap> với mỗi ai∈{int,float,bool,string,int[],float[],bool[],string[]}.
In ra q dòng, mỗi dòng là ERROR, OK, hoặc kiểu suy ra của T.
Ví dụ:
Đầu vào:
2
T T
1
2 int int
Đầu ra:
int
Đầu vào:
2
T T
1
2 int float
Đầu ra:
ERROR
Đang tải editor...