! Copyright (C) 2010 Benjamin Meinl. ! See http://factorcode.org/license.txt for BSD license. ! Library to calculate your average grade USING: kernel io prettyprint namespaces math.parser sequences math ; IN: average-grade SYMBOL: grades : read-number ( -- number/f ) readln string>number ; : read-grades ( -- ) [ read-number dup [ grades get push ] when* ] loop ; : average ( seq -- avg ) [ sum ] [ length ] bi /f ; : average-grade ( -- avg ) grades get average ; : (main) ( -- ) "Enter grades, or nothing to stop:" print read-grades average-grade number>string print ; : main ( -- ) V{ } clone grades [ (main) ] with-variable ; MAIN: main