Skip to content

Commit cd31f8e

Browse files
committed
Issue justinethier#203 - Fixes for imag-part and real-part
Let these functions work for all types of numbers.
1 parent 2c9c353 commit cd31f8e

File tree

1 file changed

+6
-0
lines changed

1 file changed

+6
-0
lines changed

hs-src/Language/Scheme/Numerical.hs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -470,12 +470,18 @@ numMagnitude badArgList = throwError $ NumArgs (Just 1) badArgList
470470
-- |Retrieve real part of a complex number
471471
numRealPart :: [LispVal] -> ThrowsError LispVal
472472
numRealPart [(Complex c)] = return $ Float $ realPart c
473+
numRealPart [n@(Float _)] = return n
474+
numRealPart [n@(Rational _)] = return n
475+
numRealPart [n@(Number _)] = return n
473476
numRealPart [x] = throwError $ TypeMismatch "complex number" x
474477
numRealPart badArgList = throwError $ NumArgs (Just 1) badArgList
475478

476479
-- |Retrieve imaginary part of a complex number
477480
numImagPart :: [LispVal] -> ThrowsError LispVal
478481
numImagPart [(Complex c)] = return $ Float $ imagPart c
482+
numImagPart [(Float _)] = return $ Number 0
483+
numImagPart [(Rational _)] = return $ Number 0
484+
numImagPart [(Number _)] = return $ Number 0
479485
numImagPart [x] = throwError $ TypeMismatch "complex number" x
480486
numImagPart badArgList = throwError $ NumArgs (Just 1) badArgList
481487

0 commit comments

Comments
 (0)