[ACT-R-users] ACT-R and Haskell

db30 at andrew.cmu.edu db30 at andrew.cmu.edu
Tue Nov 29 13:57:17 EST 2011



--On Tuesday, November 29, 2011 10:47 AM +0100 Abdul Rahim Nizamani 
<abdulra at chalmers.se> wrote:

> Hi,
>  I need ACT-R to build models for cognitive arithmetic for intelligent
> tutoring. I have been programming in Haskell for quite a time now.
>
> I read in a tutorial of ACT-R that models of ACT-R need not be written in
> Lisp.
>
> Is it possible to write models in Haskell? If yes, how?
>

I'm not quite sure what you mean by "write models in Haskell", but I can
provide some information which may help.

Generally speaking, an ACT-R model is written in "ACT-R".  The main version
of ACT-R is itself written in Lisp.  Because of that, the ACT-R syntax that
it provides for writing a model is very Lisp like, but there are other
implementations of ACT-R written in other languages which one could use
instead.  I know of two different Java implementations, one in Python, and
a different Lisp version, but as far as I know there isn't one written in
Haskell.  I don't really know much in the way of details about those other
implementations, but I believe that some use the same ACT-R syntax as the
main version and some provide a different syntax.

Alternatively, some people build models based on the theory of ACT-R
without using one of the existing ACT-R implementations.  Instead of
writing a model "in ACT-R" they use the underlying mechanisms and
equations from the theory that they feel are important to the task they
are modeling to build the model in some other way.  That can take the
form of just implementing the equations in a spreadsheet and using a
solver to get the predictions or require reimplementing large portions
of the theory in another language to use as needed.

Another issue related to writing an ACT-R model is how one writes the
task or experiment that the model is to perform.  With the main version of
ACT-R it is easiest to build those tasks in Lisp, but it is possible to
create an interface for the model to interact with outside tasks.  There
is an abstraction layer in the software for the model's perceptual and
motor modules which is called a "device".  By implementing a different
device for a model one can get its percepts from something outside of
the Lisp in which it is running and send its actions out to that external
program.  There are details on how to implement a device in the
"extending-actr" slides found in the docs directory of the distribution,
but of course that will require writing Lisp code to implement the device.
In addition to writing a device however, there is also the potential
complication of coordinating the timing between the model and the
external system.  If the other system runs in "real time" then it is
easy to run the model in real time along with it as long as any delays
caused by the communications mechanisms are negligible or acceptable in
the data, but if you want more precise timing or to run things faster
than real time that is going to require additional work to maintain
a consistent clock between them.

Hope that helps,
Dan




More information about the ACT-R-users mailing list