; if you can think of other boring words, feel free to add them
(define boring-words '(a the an in of and or but for to with))
(define (acronym-hof sent)
; accumulate into a word
(accumulate word
; get the first letter of every word
(every first
; keep only non-boring words
(keep (lambda (wd) (not (member? wd boring-words)))
sent))))
; Domain: sentence
; Range: word
(define (acronym-recursion sent)
(cond ((null? sent) "") ; range is a word
((member? (first sent) boring-words) (acronym-recursion (bf sent)))
(else (word (first (first sent)) (acronym-recursion (bf sent))))))