+#!/usr/bin/guile \
+-e main -s
+!#
+
;;; 8sync --- Asynchronous programming for Guile
;;; Copyright (C) 2016 Christopher Allan Webber <cwebber@dustycloud.org>
;;;
;; Oof! Those kids!
(display (string-append (random-choice complaints)))
+ (newline)
;; More than one student is bothering us, lose our temper
(if (> (hash-count (const #t) whos-bothering)
(define num-students 10)
-(define (main)
+(define (main . args)
(define agenda (make-agenda))
(define hive (make-hive))
- (define professor (hive-create-actor hive <professor>))
+ (define professor (hive-create-actor* hive <professor> "prof"))
(define namegen (student-name-generator))
(define students
(map
(lambda _
- (hive-create-actor* hive <student>
- (#:name (namegen))))
+ (let ((name (namegen)))
+ (hive-create-actor* hive <student> name
+ #:name name)))
(iota num-students)))
;; Bootstrap each student into bothering-professor mode.
(define start-bothering-tasks
(map
(lambda (student)
- (hive-bootstrap-message hive student 'bother-professor
+ (bootstrap-message hive student 'bother-professor
#:target professor))
students))