summaryrefslogtreecommitdiff
path: root/palindrome/palindrome.scm
diff options
context:
space:
mode:
Diffstat (limited to 'palindrome/palindrome.scm')
-rwxr-xr-xpalindrome/palindrome.scm21
1 files changed, 21 insertions, 0 deletions
diff --git a/palindrome/palindrome.scm b/palindrome/palindrome.scm
new file mode 100755
index 0000000..276e628
--- /dev/null
+++ b/palindrome/palindrome.scm
@@ -0,0 +1,21 @@
+(define-module (palindrome))
+
+
+(define-public (pp str)
+ "Pretty-printer wrapper for
+palindrome?"
+ (format #f "String ~a is ~aa palindrome!\n"
+ str
+ (if (palindrome? str)
+ "" "not ")))
+
+(define-public (palindrome? str)
+ "Returns #t if STR is a palindrome, false
+otherwise. Ignores casing and non-alphabetic
+characters."
+ (let ((clean (cleanup str)))
+ (equal? clean (string-reverse clean))))
+
+(define (cleanup str)
+ (string-downcase (string-filter
+ char-set:letter str)))