diff --git a/basis/present/present-tests.factor b/basis/present/present-tests.factor index 2208ee4fdd..4a68e7ac1f 100644 --- a/basis/present/present-tests.factor +++ b/basis/present/present-tests.factor @@ -1,8 +1,14 @@ IN: present.tests -USING: tools.test vocabs.hierarchy present math vocabs sequences kernel ; +USING: kernel math present sequences tools.test vocabs +vocabs.hierarchy ; -[ "3" ] [ 3 present ] unit-test -[ "Hi" ] [ "Hi" present ] unit-test -[ "+" ] [ \ + present ] unit-test -[ "kernel" ] [ "kernel" lookup-vocab present ] unit-test -[ ] [ all-vocabs-recursive filter-vocabs [ present ] map drop ] unit-test +{ "3" } [ 3 present ] unit-test +{ "Hi" } [ "Hi" present ] unit-test +{ "+" } [ \ + present ] unit-test +{ "kernel" } [ "kernel" lookup-vocab present ] unit-test +{ } [ all-vocabs-recursive filter-vocabs [ present ] map drop ] unit-test + +{ "1+1j" } [ C{ 1 1 } present ] unit-test +{ "1-1j" } [ C{ 1 -1 } present ] unit-test +{ "-1+1j" } [ C{ -1 1 } present ] unit-test +{ "-1-1j" } [ C{ -1 -1 } present ] unit-test diff --git a/basis/present/present.factor b/basis/present/present.factor index 2e309b358e..eae0f43021 100644 --- a/basis/present/present.factor +++ b/basis/present/present.factor @@ -1,13 +1,21 @@ ! Copyright (C) 2008, 2009 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: accessors effects io.pathnames kernel math math.parser -strings vocabs words ; +sequences strings vocabs words ; IN: present GENERIC: present ( object -- string ) M: real present number>string ; +M: complex present ( c -- str ) + [ real>> number>string ] + [ + imaginary>> + [ number>string ] + [ 0 >= [ "+" prepend ] when ] bi + ] bi "j" 3append ; + M: string present ; M: word present name>> ;