On 26-01-2023 19:57, Blake Shaw wrote:
+A pattern matcher does precisely what the name implies: it matches +some arbitrary pattern, and returns some result accordingly.
It doesn't need to return anything -- while functional style is common in Guile, imperative is still possible. It can return multiple things with 'values'. I propose replacing 'result' with 'results'.
@example
-(let ((l '(hello (world))))
- (match l ;; <- the input object
- (('hello (who)) ;; <- the pattern
- who))) ;; <- the expression evaluated upon matching
-@result{} world
+(define (english-base-ten->number name)
+ (match name
+ ('zero 0)
+ ('one 1)
+ ('two 2)
+ ('three 3)
+ ('four 4)
+ ('five 5)
+ ('six 6)
+ ('seven 7)
+ ('eight 8)
+ ('nine 9)))
+
+(english-base-ten->number 'six)
+@result{} 6
This is a suboptimal example; this would be better done with 'case'.I propose replacing it with another example, or adding a note that one would normally use 'case' for this.
Greetings, Maxime.
OpenPGP_0x49E3EE22191725EE.asc
Description: OpenPGP public key
OpenPGP_signature
Description: OpenPGP digital signature
