On 8 Mar 2005, at 19:18, Ovid wrote:
[snip]
My question in a nutshell:  given 45 minutes to show a roomful of
programmers with no prior experience in logic programming just how
powerful it can be, what approach would you take?
[snip]

I've used this little example to impress people (shamelessly stolen from <http://www.ainewsletter.com/newsletters/aix_0305.htm>.)

Start off with

        member( X, [ X | _ ] ).
        member( X, [ _ | Z ] ) :- member( X, Z ).

which is enough to demonstrate the declarative and generative stuff you can get out of simple statements, then hit them with:

        send( Object, Message ) :-
                class( Object, methods( Methods ) ),
                member( ( Message :- Method ), Methods ),
                call( Method ).

        class(
        rectangle( H, W ),
        methods( [
            ( area(A) :- A is H * W ),
            ( perimeter(P) :- P is 2 * (H + W) )
        ] )
    ).
        
        class(
        circle(R),
        methods( [
            ( area(A) :- A is pi * R * R ),
            ( perimeter(P) :- 2 * pi * R )
        ] )
    ).

allowing us to do:

    ?- send( circle(1), area(A) ).
    A = 3.14159

Implementing a basic OO system in 6 lines of code is kinda neat :-)

Cheers,

Adrian



Reply via email to