! 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 : init ( -- ) V{ } clone grades set ; : 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 init read-grades average-grade . ; MAIN: main