[Haskell-cafe] Atom - help.

Tom Hawkins tomahawkins at gmail.com
Sat Nov 28 00:06:41 EST 2009


On Fri, Nov 27, 2009 at 6:52 AM, miaubiz <miaubiz at gmail.com> wrote:
>
> would the way you implemented random in Unit.hs work here? an external
> variable whose name is the function that returns input.

Yes, but you have to be a little careful.  If in the same rule you
reference 'heading' multiple times, or create another instance using
'compare', it will still only call 'readCompare()' once during the
execution of rule 'navigate'.  It's not a problem if 'readCompass()'
has no side-effects.  But if it does, you probably won't get the
results you expect.

>
> compass :: Atom (E Int16)
> compass = int16' "readCompass()" >>= (return . value)
>
> something <- int16' "something"
> period 1 $ atom "navigate" $ do
>  heading <- compass
>  something <== heading
>
> br, miaubiz
>
>
> Tom Hawkins-2 wrote:
>>
>> The work around is to assign the result to an external variable.  The
>> drawback is the result will not be available until the rule executing
>> the action has completed.
>>
>> results <- bool' "result"   -- Global, external variable to capture
>> result.
>> action (\ [a, b, c] -> printf "result = function(%s, %s %s)" a b c) [a, b,
>> c]
>>
>
> --
> View this message in context: http://old.nabble.com/Atom---help.-tp24010994p26535883.html
> Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com.
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>


More information about the Haskell-Cafe mailing list