#!/usr/bin/env sh
exec guile -L $(dirname $(dirname $(realpath "$0"))) --language=wisp -e '(@@ (examples map-product-sums) main)' -s "$0" "$@"
; !#

use-modules : (srfi srfi-42) 

define-module : examples map-product-sums

define : list-product-sums list-of-numbers
       . "return a list with the sum of the products of each number with all other numbers.

         >>> map-product-sums '(2 4 6)
         (list (+ (* 2 4) (* 2 6)) (+ (* 4 2) (* 4 6)) (+ (* 6 2) (* 6 4)))
         "
       map (lambda (x) (apply + x))
           list-ec (: i list-of-numbers)
               map (lambda (x) (* i x))
                   cons (- i) list-of-numbers


define : main . args
  write : list-product-sums '(2 4 6)