Monomorphization
In programming languages, monomorphization is a compile-time process where polymorphic functions are replaced by many monomorphic functions for each unique instantiation.[1] This transformation is desirable, since then the output intermediate representation (IR) will have concrete types and can be optimized better. Furthermore, most IRs are designed to be low-level and do not support polymorphism. Code generated this way is typically faster than boxed types, but may compile slower and take more space due to duplicating the function body.[2][3][4][5][6][7]
Example
For example, this is an example of a use of a generic identity function in Rust
fn id<T>(x: T) -> T {
return x;
}
fn main() {
let int = id(10);
let string = id("some text");
println!("{0}, {1}", int, string);
}
After monomorphization, this would become
fn id_i32(x: i32) -> i32 {
return x;
}
fn id_str(x: &str) -> &str {
return x;
}
fn main() {
let int = id_i32(10);
let string = id_str("some text");
println!("{0}, {1}", int, string);
}
References
- "Generic Data Types - The Rust Programming Language". Retrieved 27 May 2021.
- Hume, Tristan. "Models of Generics and Metaprogramming: Go, Rust, Swift, D and More". Retrieved 27 May 2021.
- Tanaka, Akira; Affeldt, Reynald; Garrigue, Jacques (2018). "Safe Low-level Code Generation in Coq Using Monomorphization and Monadification". Journal of Information Processing. 26: 54–72. doi:10.2197/ipsjjip.26.54.
- "Extending Smt-Lib v2 with λ-Terms and Polymorphism". citeseerx.ist.psu.edu. CiteSeerX 10.1.1.663.6849. Retrieved 2021-07-06.
- Cai, Yufei; Giarrusso, Paolo G.; Ostermann, Klaus (2016-01-11). "System f-omega with equirecursive types for datatype-generic programming". Proceedings of the 43rd Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. POPL '16. St. Petersburg, FL, USA: Association for Computing Machinery: 30–43. doi:10.1145/2837614.2837660. ISBN 978-1-4503-3549-2. S2CID 17566568.
- Klabnik, Steve; Nichols, Carol (2019-08-06). The Rust Programming Language (Covers Rust 2018). No Starch Press. ISBN 978-1-7185-0044-0.
- Felty, Amy P.; Middeldorp, Aart (2015-07-30). Automated Deduction - CADE-25: 25th International Conference on Automated Deduction, Berlin, Germany, August 1-7, 2015, Proceedings. Springer. ISBN 978-3-319-21401-6.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.