Differences

This shows you the differences between two versions of the page.

Link to this comparison view

dss:laboratoare:02 [2019/06/18 14:23]
razvan.nitu1305 [1. Enum disassembly]
dss:laboratoare:02 [2019/06/20 10:40] (current)
razvan.nitu1305 [2. Generic Partitioning Search]
Line 683: Line 683:
  
 Template constraints have the same syntax as an if statement (without else). Template constraints have the same syntax as an if statement (without else).
 +
 +
  
 ===== Exercises ===== ===== Exercises =====
 +
 +The exercises for ''​lab-02''​ are located in this [[https://​github.com/​RazvanN7/​D-Summer-School/​tree/​master/​lab-02|repo]].
  
 ==== 1. Enum disassembly ==== ==== 1. Enum disassembly ====
Line 697: Line 701:
   * The algorithm will receive an array/​associative array and an element and returns the number of elements that are lesser than the element in the array/​associative array list of keys.   * The algorithm will receive an array/​associative array and an element and returns the number of elements that are lesser than the element in the array/​associative array list of keys.
   * The element type may be struct, class or builtin type.   * The element type may be struct, class or builtin type.
-  * Struct and builtin types have default ordering comparison, however classes do not. 
   * Use templated function(s) and **template constraints** or **static if**s to implement the various cases.   * Use templated function(s) and **template constraints** or **static if**s to implement the various cases.
   * Use these [[https://​dlang.org/​phobos/​std_traits.html|helper traits]].   * Use these [[https://​dlang.org/​phobos/​std_traits.html|helper traits]].
Line 718: Line 721:
 Use **pragma(msg)** inside the templated functions from the previous exercise. Observe the output when compiling the code. Explain the results. Use **pragma(msg)** inside the templated functions from the previous exercise. Observe the output when compiling the code. Explain the results.
  
-==== 4. Unknown number of template arguments ​====+==== 4. Template Sequence Parameters ​====
  
 Navigate to the ''​4-template''​ directory. Inspect the source ''​template.d''​ and try to understand what happens. What does the code do? How many instances of the **printArguments** function are created? Navigate to the ''​4-template''​ directory. Inspect the source ''​template.d''​ and try to understand what happens. What does the code do? How many instances of the **printArguments** function are created?
Line 724: Line 727:
 <note hint> <note hint>
 Use **pragma(msg)** to inspect the instantiation type(s). Use **pragma(msg)** to inspect the instantiation type(s).
-</hint>+</note> 
 + 
 +==== 5. Error ==== 
 + 
 +Navigate to the ''​5-error''​ directory. Inspect and compile the code. What happens? Why? Solve the issue.
  
 +==== 6. Standard library template example ====
  
 +Follow this [[https://​github.com/​dlang/​phobos/​blob/​master/​std/​algorithm/​sorting.d#​L317|link]]. That is the official D language standard library implementation of the **ordered** function. Read the documentation and the unittests, then try to understand the implementation. This is how real life meta-programming looks like. Ask the [[http://​ocw.cs.pub.ro/​courses/​dss?&#​team|lab rats]] about clarifications on any misunderstandings. ​
dss/laboratoare/02.1560856994.txt.gz · Last modified: 2019/06/18 14:23 by razvan.nitu1305
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0