fbpx
Wikipedia

Monomorphization

In programming languages, monomorphization is a compile-time process where polymorphic functions are replaced by many monomorphic functions for each unique instantiation.[1] It is considered beneficial to undergo the mentioned transformation because it results in the output intermediate representation (IR) having specific types, which allows for more effective optimization. Additionally, many IRs are intended to be low-level and do not accommodate polymorphism. The resulting code is generally faster than dynamic dispatch, but may require more compilation time and storage space due to duplicating the function body.[2][3][4][5][6][7]

Example edit

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!("{int}, {string}"); } 

After monomorphization, this would become equivalent to

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!("{int}, {string}"); } 

See also edit

References edit

  1. ^ "Generic Data Types - The Rust Programming Language". Retrieved 27 May 2021.
  2. ^ Hume, Tristan. "Models of Generics and Metaprogramming: Go, Rust, Swift, D and More". Retrieved 27 May 2021.
  3. ^ 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.
  4. ^ "Extending Smt-Lib v2 with λ-Terms and Polymorphism". CiteSeerX 10.1.1.663.6849. {{cite journal}}: Cite journal requires |journal= (help)
  5. ^ 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. pp. 30–43. doi:10.1145/2837614.2837660. ISBN 978-1-4503-3549-2. S2CID 17566568.
  6. ^ Klabnik, Steve; Nichols, Carol (2019-08-06). The Rust Programming Language (Covers Rust 2018). No Starch Press. ISBN 978-1-7185-0044-0.
  7. ^ 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.

monomorphization, programming, languages, monomorphization, compile, time, process, where, polymorphic, functions, replaced, many, monomorphic, functions, each, unique, instantiation, considered, beneficial, undergo, mentioned, transformation, because, results. In programming languages monomorphization is a compile time process where polymorphic functions are replaced by many monomorphic functions for each unique instantiation 1 It is considered beneficial to undergo the mentioned transformation because it results in the output intermediate representation IR having specific types which allows for more effective optimization Additionally many IRs are intended to be low level and do not accommodate polymorphism The resulting code is generally faster than dynamic dispatch but may require more compilation time and storage space due to duplicating the function body 2 3 4 5 6 7 Example editThis is an example of a use of a generic identity function in Rust fn id lt T gt x T gt T return x fn main let int id 10 let string id some text println int string After monomorphization this would become equivalent to fn id i32 x i32 gt i32 return x fn id str x amp str gt amp str return x fn main let int id i32 10 let string id str some text println int string See also editParametric polymorphism Type erasure Template C References edit 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 l Terms and Polymorphism CiteSeerX 10 1 1 663 6849 a href Template Cite journal html title Template Cite journal cite journal a Cite journal requires journal help 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 pp 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 Retrieved from https en wikipedia org w index php title Monomorphization amp oldid 1189635700, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.