Differences

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

Link to this comparison view

Next revision
Previous revision
pp:2025:scala:l06 [2025/04/02 20:15]
cata_chiru created
pp:2025:scala:l06 [2025/04/09 22:22] (current)
cata_chiru
Line 2: Line 2:
  
 ===== 6.1 A small string DSL ===== ===== 6.1 A small string DSL =====
 +
 +<note warning>​For this laboratory, you will need to have a scala version >= 3.0.0, only starting from version 3.0.0 is the keyword "​extension"​ available.</​note>​
  
 In this section we will extend the scala ''​String''​ class with several operators that implement useful string functions, effectively obtaining a small string-specialized [[https://​en.wikipedia.org/​wiki/​Domain-specific_language|DSL]]. In this section we will extend the scala ''​String''​ class with several operators that implement useful string functions, effectively obtaining a small string-specialized [[https://​en.wikipedia.org/​wiki/​Domain-specific_language|DSL]].
Line 14: Line 16:
 val res56: String = oders val res56: String = oders
 </​code>​ </​code>​
 +
 +<​note>​
 +Reminder from the DSL (Domain-Specific Language) Course:
 +
 +<code scala>
 +extension (str: String) {
 +  def >>​(rhs:​ Int): String = ???
 +}
 +</​code>​
 +</​note>​
 +
  
 **6.1.2** Implement the ''<​nowiki><<<</​nowiki>''​ and ''<​nowiki>>>></​nowiki>''​ operators for a ''​String''​ and an ''​Int'',​ that **rotate** the string in a direction by the given amount: **6.1.2** Implement the ''<​nowiki><<<</​nowiki>''​ and ''<​nowiki>>>></​nowiki>''​ operators for a ''​String''​ and an ''​Int'',​ that **rotate** the string in a direction by the given amount: