একটি টাইপ যখন টাইপ প্যারামিটার ব্যবহার করে যেকোনো টাইপের মান ধারণ করতে পারে, তখন তাকে জেনেরিক টাইপ বলা হয়।
উদাহরণস্বরূপ, এই Box টাইপটির টাইপ প্যারামিটার হল a (ছোট হাতের অক্ষরে লেখা)।
pub type Box(a) {
Box(a)
}
a টাইপ প্যারামিটারটি যেকোনো টাইপের জন্য একটি প্লেসহোল্ডার, তাই Box স্ট্রিং, ইন্টিজার বা অন্য যেকোনো টাইপের সাথে ব্যবহার করা যায়।
Box("Hello, Joe!") // The type is Box(String)
Box(42) // The type is Box(Int)
কমা দিয়ে আলাদা করে একটি টাইপে একাধিক টাইপ প্যারামিটার রাখা যায়।
pub type Pair(a, b) {
Pair(a, b)
}
টাইপ প্যারামিটার ফাংশনের আর্গুমেন্টেও ব্যবহার করা যায়।
এই ফাংশনটি a টাইপের একটি মান নেয় এবং এমন একটি ফাংশনকে দুইবার কল করে, যেটি একটি a নিয়ে একটি b রিটার্ন করে।
pub fn twice(value: a, f: fn(a) -> b) -> b {
f(value)
f(value)
}
// The type is fn(String, fn(String) -> Nil) -> Nil
twice("Hello, Joe!", io.println)