From 7b1e3ce5f77184488f58f9ed67dbc56bfc6d69e9 Mon Sep 17 00:00:00 2001 From: Justin Ethier Date: Mon, 24 Oct 2016 00:24:16 +0000 Subject: [PATCH] Issue #112: Allow reader to recognize inf and nan --- CHANGELOG.md | 4 ++++ scheme/read.sld | 9 ++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 11d51f6e..b624d87f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,10 @@ TODO: more performance improvements TODO: SRFI 113 +Features: + +- Allow the reader to recognize `+inf.0`, `-inf.0`, `+nan.0`, and `-nan.0`. + Bug Fixes - Only throw a divide by zero error for integer division. Floating point divide by zero is allowed and evaluates to `nan`. diff --git a/scheme/read.sld b/scheme/read.sld index 51f3dbe6..3575b667 100644 --- a/scheme/read.sld +++ b/scheme/read.sld @@ -532,7 +532,14 @@ (define (parse-atom a) (if (token-numeric? a) (string->number (list->string a)) - (string->symbol (list->string a)))) + (let ((atom (string->symbol (list->string a)))) + (if (or (eq? atom '+inf.0) + (eq? atom '-inf.0)) + (expt 2 1000000) + (if (or (eq? atom '+nan.0) + (eq? atom '-nan.0)) + (/ 0.0 0.0) + atom))))) ;;;;; ;; Read next character from port, using buffered char if available