[plt-scheme] signed unit syntax
Hello David
I believe you just need the expression inside the old friend the begin
form then the compound-unit gets invoked before its called:
(define output-sqrt-sum-squares
(lambda (x y)
(begin
(invoke-unit/sig
(compound-unit/sig
(import)
(link
(COMP : c^ (sqrt-sum-squares@))
(OUT : o^ (simple-output@)))
(export (open COMP) (open OUT))))
(output (computation x y)))))
Presume you mean to call computation rather than distance as well :-)
Then at the prompt you can call the function:
> (output-sqrt-sum-squares 3 4)
value = 25
>
Best wishes
Stephen Tetley
David J. Neu wrote:
> For list-related administrative tasks:
> http://list.cs.brown.edu/mailman/listinfo/plt-scheme
>
>Hi all,
>
>I'm trying to get a handle around some of the syntax for signed units
>and have attached a simple toy example to show where I'm stuck.
>
>In the example, there are two units one that performs some simple
>computation and one that displays formatted output. I have a function
>called _output-sqrt-sum-squares_ which consumes the values to submit
>to the computation and tries to run the compuation and output the
>result.
>
>The error I'm getting is
>
>
>>reference to undefined identifier: output
>>
>>
>Clearly a lack of understanding on my part.
>
>Thanks in advance for any help!
>
>Cheers,
>David
>
>
>(require (lib "unitsig.ss"))
>
>(define-signature c^ (computation))
>
>(define-signature o^ (output))
>
>(define sqrt-sum-squares@
> (unit/sig c^
>
> (import)
>
> (define square
> (lambda (x) (* x x)))
>
> (define computation
> (lambda (x y)
> (+ (square x) (square y))))))
>
>(define simple-output@
> (unit/sig o^
>
> (import)
>
> (define output
> (lambda (v)
> (printf "value = ~a~n" v)))))
>
>(define output-sqrt-sum-squares
> (lambda (x y)
> (invoke-unit/sig
> (compound-unit/sig
> (import)
> (link
> (COMP : c^ (sqrt-sum-squares@))
> (OUT : o^ (simple-output@)))
> (export (open COMP) (open OUT))))
> (output (distance x y)))) ; *** I don't know how to make this procedure call ***
>
>(output-sqrt-sum-squares 2 4)
>
>
>
>
>