Previous: Message methods, Up: Messages   [Contents]


3.3 Example - the longest subject

Now, let’s write a little example – let’s find out what is the longest subject of any e-mail messages we received in the year 2011. You can try this if you put the following in a separate file, make it executable, and run it like any program.

#!/bin/sh
exec guile -s $0 $ !#

(use-modules (mu))
(use-modules (srfi srfi-1))

(mu:initialize)

;; note: (subject msg) => #f if there is no subject
(define list-of-subjects
  (map (lambda (msg)
      (or (mu:subject msg) "")) (mu:message-list "date:2011..2011")))
;; see the mu-find manpage for the date syntax

(define longest-subject
  (fold (lambda (subj1 subj2)
      (if (> (string-length subj1) (string-length subj2))
	subj1 subj2))
    "" list-of-subjects))

(format #t "Longest subject: ~s\n" longest-subject)

There are many other ways to solve the same problem, for example by using an iterative approach with mu:for-each-message, but it should show how one can easily write little programs to answer specific questions about your e-mail corpus.