To add to what Carl and Robby said:

On Thu, Jul 18, 2013 at 2:29 AM,  <[email protected]> wrote:
> (although truth be told, mail headers are surprisingly nonstandard even
> within a single message)

That's where net/head could definitely help. (Especially for SMTP
headers, which tend to be more "interesting" than typical HTTP
headers.)

> I eventually discovered that I could sort of cheat, by just wrapping the
> regexp-match function with a car (which worked, because this particular
> list only had one element), and then it was usable from then on (and
> validated true from "string?").

It's worth walking through what Carl described. Actually you're lucky,
you have a specific example of something you want to do, which touches
on a few basic aspects of Racket.

Having said that, one pattern I've settled into using with regexps is
to use `match`, which makes it convenient to "de-structure" the list.
For example:

(match "From: Me"
  [(pregexp "^(.+):\\s*(.+)$" (list all key val))
   (displayln all)   ; From: Me
   (displayln key)   ; From
   (displayln val)]) ; Me

If you don't need the "all" part, you can supply _ like so:

(match "From: Me"
  [(pregexp "^(.+):\\s*(.+)$" (list _ key val))
   (displayln key)
   (displayln val)])

Which is the pattern I use a lot.

Again, you probably want to use net/head to deal with the gory details
of SMTP headers as Robby suggested, and it would definitely be good to
walk through the explorations Carl described.
____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to