Re: [Haskell-cafe] Wumpus World

2008-03-31 Thread Benjamin L. Russell

--- Richard A. O'Keefe [EMAIL PROTECTED] wrote:

 [snip]
 
 Let me contrast SICStus Prolog with GHC.
 I *have* a personal copy of SICStus on my SunBlade
 100/Solaris 2.10
 system which installed absolutely trouble free.
 I *did* have a copy of GHC, but trying to install
 GHC 6.4 took
 a great deal of my time and now I don't have a
 working GHC any more.
 So for me, GHC is by far the more expensive: I've
 spent considerably
 more than 500 Euros of my time and got nothing for
 it.  Much though
 I admire Jan, I've also had such a lot of trouble
 installing SWI Prolog
 on various machines that SICStus was *really*
 cheaper than the free
 Prolog after all.  I do wish people would remember
 that not all the
 world is Linux.

Sorry to hear about your troubles with GHC.  Have you
tried documenting your problems and sending an inquiry
to the Glasgow-haskell-bugs mailing list (see
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs)?
 That mailing list is dedicated to GHC-related bugs,
and they tend to be quite responsive.

FWIW, I have GHC 6.8.2, which installed trouble-free,
running on a Windows XP (Service Pack 2) system at
work.  I did customize it (after installation) to
restore the original banner, but that was a
customization, not a bug-fix, and I haven't
encountered any bugs per se with it so far.

 
 153 Euros (why did the Europeans name their currency
 after the
 Common Wallaroo?) is NZD 303 or about the price of
 two textbooks.
 (Three copies of Bird's introduction to functional
 programming
 would do it, if they shipped free.)
 
 You're telling me that *researchers* can't afford
 the price of
 a couple of books?

It's more than that, actually, because, in my case, I
also want to study it at home on a PPC-based PowerBook
running Mac OS X 10.2.8 Jaguar, soon-to-be-upgraded to
the PPC version of Mac OS X 10.5.x Leopard,
soon-to-be-replaced by an Intel-based MacBook Pro
running the Intel version of Mac OS X 10.5.x Leopard. 
And this is alongside studying it at work.

Granted, SICStus Prolog does appear to be an extremely
easy-to-install, fast, well-documented, stable,
industrial-grade version of Prolog.  It would probably
provide an extremely pleasant and rewarding Prolog
experience.  It is probably well-supported as well.

However, the Personal License of SICStus Prolog is
only valid for a single computer running a single copy
at any one time.  So I would actually need to purchase
a minimum of two licenses if I used it at both work
and home and then went through the trouble of
uninstalling each version of SICStus Prolog every time
I upgraded my OS at home (which I usually don't do,
because it costs already purchased time), and a
maximum of four licenses if I chose not to uninstall.

Now,

4 * 153 euros = 612 euros

which is much more than the price of a couple books.

 
 The academic licence isn't that unreasonable.  1560
 Euros is
 NZD 3091, which is about one month of a TA's pay. 
 Another 880
 Euros gives you the right to give your students free
 binaries,
 however many students you have, year after year
 after year.
 
   Can you recommend an alternative, fast
  Prolog development system under a free licensing
  agreement, such as GPL/GLPL?
 
 There is, after all, GNU Prolog.  The last time I
 saw any benchmarks,
 it was substantially faster than SWI, while not
 quite as good as  
 SICStus.
 
 See http://gprolog.inria.fr/ or
 http://www.gprolog.org/

Yes, GNU Prolog does seem one alternative.  Thank you
for providing the link.  I'll have to compare and
contrast it with SICStus Prolog and SWI-Prolog.

Although the ease of installation of SICStus Prolog
does seem enticing, the need to purchase a new license
every time I use a different computer seems a little
frightening.  What happens if one day, my boss
suddenly tells me I'm fired and prohibits access to my
work PC for security reasons, thereby preventing me
from uninstalling SICStus Prolog at work, and I then
need to continue studying it on a different PC at a
new job?  Wouldn't I need to purchase another Personal
License, at another 153 euros?  There is no such thing
as real job security in the current job market. 
This could happen without warning at any time, for any
reason or even lack of reason.

 
 For what it's worth, GNU Prolog's developers *do*
 realise that not all
 the world's linux.

Yes, but I'm not quite sure what you mean by this,
since SWI-Prolog is also available on Windows, and I
don't use Linux, either--I use Mac OS X.  So who is it
that believes that all the world is Linux?

Benjamin L. Russell
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Wumpus World

2008-03-30 Thread Richard A. O'Keefe

On 28 Mar 2008, at 10:59 pm, Benjamin L. Russell wrote:

The commercial SICStus Prolog is also substantially
more expensive (see
http://www.sics.se/isl/sicstuswww/site/index.html), at
153 euros for a Personal License (see
http://www.sics.se/isl/sicstuswww/site/order4.html).
Prices for Academic, Single-User Commercial, and
Multi-User Commercial licenses are even more
expensive, at 1560, 1980, and 7800 euros,
respectively.  An Evaluation License is only valid for
30 days.

Not all students and researchers can afford a Personal
License.


Let me contrast SICStus Prolog with GHC.
I *have* a personal copy of SICStus on my SunBlade 100/Solaris 2.10
system which installed absolutely trouble free.
I *did* have a copy of GHC, but trying to install GHC 6.4 took
a great deal of my time and now I don't have a working GHC any more.
So for me, GHC is by far the more expensive: I've spent considerably
more than 500 Euros of my time and got nothing for it.  Much though
I admire Jan, I've also had such a lot of trouble installing SWI Prolog
on various machines that SICStus was *really* cheaper than the free
Prolog after all.  I do wish people would remember that not all the
world is Linux.

153 Euros (why did the Europeans name their currency after the
Common Wallaroo?) is NZD 303 or about the price of two textbooks.
(Three copies of Bird's introduction to functional programming
would do it, if they shipped free.)

You're telling me that *researchers* can't afford the price of
a couple of books?

The academic licence isn't that unreasonable.  1560 Euros is
NZD 3091, which is about one month of a TA's pay.  Another 880
Euros gives you the right to give your students free binaries,
however many students you have, year after year after year.


 Can you recommend an alternative, fast
Prolog development system under a free licensing
agreement, such as GPL/GLPL?


There is, after all, GNU Prolog.  The last time I saw any benchmarks,
it was substantially faster than SWI, while not quite as good as  
SICStus.


See http://gprolog.inria.fr/ or http://www.gprolog.org/

For what it's worth, GNU Prolog's developers *do* realise that not all
the world's linux.


___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Wumpus World

2008-03-28 Thread Benjamin L. Russell

--- Richard A. O'Keefe [EMAIL PROTECTED] wrote:

 [snip]
 
 The Prolog results at
 http://shootout.alioth.debian.org/
 are only for the open source system SWI Prolog,
 which is basically
 a one-man effort.  The commercial SICStus Prolog is
 substantially
 faster.  Some of the Prolog benchmark versions look
 distinctly odd.

The commercial SICStus Prolog is also substantially
more expensive (see
http://www.sics.se/isl/sicstuswww/site/index.html), at
153 euros for a Personal License (see
http://www.sics.se/isl/sicstuswww/site/order4.html). 
Prices for Academic, Single-User Commercial, and
Multi-User Commercial licenses are even more
expensive, at 1560, 1980, and 7800 euros,
respectively.  An Evaluation License is only valid for
30 days.

Not all students and researchers can afford a Personal
License.  Can you recommend an alternative, fast
Prolog development system under a free licensing
agreement, such as GPL/GLPL?

Benjamin L. Russell
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Wumpus World

2008-03-28 Thread Andrew Butterfield

Benjamin L. Russell wrote:



Not all students and researchers can afford a Personal
License.  Can you recommend an alternative, fast
Prolog development system under a free licensing
agreement, such as GPL/GLPL?
  


For Mac users, https://www.cs.tcd.ie/open-prolog/ might be worth a look
  


___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Wumpus World

2008-03-28 Thread jerzy . karczmarczuk



Benjamin L. Russell wrote:
 


Not all students and researchers can afford a Personal
License.  Can you recommend an alternative, fast
Prolog development system under a free licensing
agreement, such as GPL/GLPL?


You have quite a choice if you relax your licensing requirements: 

http://www.thefreecountry.com/compilers/prolog.shtml 


You will find there the GNU-Prolog, whose licensing should be as
you wish. 

Jerzy Karczmarczuk 



___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Wumpus World

2008-03-28 Thread Tom Schrijvers

Not all students and researchers can afford a Personal
License.  Can you recommend an alternative, fast
Prolog development system under a free licensing
agreement, such as GPL/GLPL?


SWI-Prolog is about the best and most popular open Prolog system:

http://www.swi-prolog.org

It's not the fastest, just like GCC doesn't generates the fastest code. 
Who cares?


If you want speed, then Yap is the best open Prolog system.

http://www.ncc.up.pt/~vsc/Yap/

Cheers,

Tom

--
Tom Schrijvers

Department of Computer Science
K.U. Leuven
Celestijnenlaan 200A
B-3001 Heverlee
Belgium

tel: +32 16 327544
e-mail: [EMAIL PROTECTED]
url: http://www.cs.kuleuven.be/~toms/
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Wumpus World

2008-03-27 Thread Robert Wills

This might also be relevant:
http://web.engr.oregonstate.edu/~erwig/zurg/


___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Wumpus World

2008-03-27 Thread Richard A. O'Keefe


On 27 Mar 2008, at 8:25 pm, Robert Wills wrote:


This might also be relevant:
http://web.engr.oregonstate.edu/~erwig/zurg/


But note that the Prolog code that they compared against was, um,
let's put this kindly, seriously naive.  For example,
(a) it has 36 SLOC.You can do it naturally in 20.
(b) it has  8 predicates.  You can do it naturally in  4.
(c) it does lots of list munching, and that inefficiently.
You can do it much more naturally with the only list being the  
solution.
Indeed, a very minor rewrite from the natural code gives you a  
Prolog
program where NO heap storage is allocated except the list of  
move names.

(d) It generates candidate solutions and then rejects ones that take too
long.  It is easier and more natural to reject over-time paths  
before

extending them to solutions, so the Prolog code they used for
comparison is *structurally* inefficient.

30 years ago people were writing papers showing that Lisp was better  
than
very badly written Prolog.  Now they are writing papers showing that  
Haskell
is better than very badly written Prolog.  How things have changed!   
NOT.


Also note that the paper says
The most important feature of Haskell that supports
 [the impression that Haskell is good at this kind of
  thing]
 is the availability of multi-parameter type classes...
and that Haskell 98 had no multi-parameter type classes, which are
a pretty advanced part of the language for beginners to understand.
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


[Haskell-cafe] Wumpus World

2008-03-26 Thread iliali16

Hi guys I have to build the wumpus world problem. I didn't start yet since
this is the first time in my life I have to do something like that and I
feel not confident in starting it. So I have basic idea of what prolog and
haskell can do and I know a bit of Java. I am wandering if you can tell me
which one is best to use to build this problem.Thanks couse I am really
confused
-- 
View this message in context: 
http://www.nabble.com/Wumpus-World-tp16310198p16310198.html
Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com.

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Wumpus World

2008-03-26 Thread Paul Johnson

iliali16 wrote:

Hi guys I have to build the wumpus world problem. I didn't start yet since
this is the first time in my life I have to do something like that and I
feel not confident in starting it. So I have basic idea of what prolog and
haskell can do and I know a bit of Java. I am wandering if you can tell me
which one is best to use to build this problem.Thanks couse I am really
confused
  
This sounds like a homework problem.  Any of those languages will do.  
Of course Haskell will be shorter.


Jump in, get started.  The way to solve a problem you don't understand 
is to do any bit of it you do understand, and then look at the problem 
again.


Paul.

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Wumpus World

2008-03-26 Thread Benjamin L. Russell
After briefly searching the Internet and coming up
with a page entitled CIS587: The Wumpus World
(http://www.cis.temple.edu/~ingargio/cis587/readings/wumpus.shtml),

I think that since the statement of this problem
there, involving the Situation Calculus, chiefly
involves a sequence of logical statements with truth
values and the relations between the statements, the
statements there could perhaps initially be more
directly applied with Prolog than with Haskell.

However, note that it has been demonstrated in the
following book that it is possible to consider logic
programming as a natural extension of functional
programming as well (although this book is on Scheme,
the concepts can be extended to Haskell as well):

* Daniel P. Friedman, William E. Byrd and Oleg
Kiselyov.  _The Reasoned Schemer._  Cambridge, MA: The
MIT Press, July 2005.
ISBN-10: 0-262-56214-6
ISBN-13: 978-0-262-56214-0
http://mitpress.mit.edu/catalog/item/default.asp?ttype=2tid=10663

I would suggest that you read about both Prolog and
Haskell, take a look at the above book (after first
looking at its prerequisite, _The Little Schemer_),
and then compare whether you would prefer more
directly applying Prolog or using the above book and
extending it to apply Haskell.

Also, you may wish to keep in mind the following
differences between Haskell and Prolog:

* Prolog is initially better suited to representing
knowledge originally represented as a sequence of
logic statements and the relations among them

* Haskell is well-suited to writing programs that can
be expressed as mathematical functions, and
incorporates lazy evaluation, which allows delaying
the evaluation of an argument until evaluation is
required

* Haskell code tends to be more succinct (as Paul
Johnson mentioned)

* Haskell code tends to run faster, and can often be
optimized to run at a speed on par with OCaml

* Prolog tends to be one of the slowest-running
programming languages

I would also suggest that you take a look at the
HaskellWiki
(http://www.haskell.org/haskellwiki/Haskell), and in
particular, at the following example related to logic
programming:

* HaskellWiki Logic programming example:
http://www.haskell.org/haskellwiki/Logic_programming_example

Compare this example to examples of Prolog code, and
see which one suits your taste.

Lastly, when learning Haskell, please try to learn
from books, not tutorials.  Haskell has a very steep
learning curve, and is very difficult to cover
adequately in a short tutorial.  In particular, I
recommend the following titles:

* Hudak, Paul.  _The Haskell School of Expression._ 
New York: Cambridge University Press, 2000.
http://www.haskell.org/soe/
(Just make sure that you review your trigonometry
before reading this book, because some of the
exercises in it assume knowledge of trigonometry.  I
found this book extremely interesting, but discovered
that it does assume some domain knowledge in that
area.)

*  Kees Doets and Jan van Eijck.  _The Haskell Road to
Logic, Maths and Programming._  College Publications,
April 2004.
http://homepages.cwi.nl/~jve/HR/
A book that uses Haskell as a tool for learning about
logic and mathematics.  Nevertheless, the book is
highly readable, and does a good job of introducing
Haskell.  It also assumes less domain knowledge than
the above book.
(Write to me personally if you want more information
about this book.)

Good luck!

Benjamin L. Russell

--- Paul Johnson [EMAIL PROTECTED] wrote:

 iliali16 wrote:
  Hi guys I have to build the wumpus world problem.
 I didn't start yet since
  this is the first time in my life I have to do
 something like that and I
  feel not confident in starting it. So I have basic
 idea of what prolog and
  haskell can do and I know a bit of Java. I am
 wandering if you can tell me
  which one is best to use to build this
 problem.Thanks couse I am really
  confused

 This sounds like a homework problem.  Any of those
 languages will do.  
 Of course Haskell will be shorter.
 
 Jump in, get started.  The way to solve a problem
 you don't understand 
 is to do any bit of it you do understand, and then
 look at the problem 
 again.
 
 Paul.
 
 ___
 Haskell-Cafe mailing list
 Haskell-Cafe@haskell.org
 http://www.haskell.org/mailman/listinfo/haskell-cafe
 

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe


Re: [Haskell-cafe] Wumpus World

2008-03-26 Thread Richard A. O'Keefe

On 27 Mar 2008, at 4:23 pm, Benjamin L. Russell wrote:


After briefly searching the Internet and coming up
with a page entitled CIS587: The Wumpus World
(http://www.cis.temple.edu/~ingargio/cis587/readings/wumpus.shtml),

I think that since the statement of this problem
there, involving the Situation Calculus, chiefly
involves a sequence of logical statements with truth
values and the relations between the statements, the
statements there could perhaps initially be more
directly applied with Prolog than with Haskell.


A solution to the problem is a sequence of actions.
In Prolog,
action(right).
action(left).
action(forward).
action(shoot).
action(grab).
action(release).
action(climb).

solution(Actions) :-
initial_state(State0),
length(Actions, _),
fill_in(Actions, State0).

fill_in([], State) :-
final_state(State).
fill_in([Action|Actions], State0) :-
action(Action),
effect(Action, State0, State1),
fill_in(Actions, State1).

Now all that's left is to implement effect(Action, State0, State1),
which means (known) action Action can be carried out in
(known) state State0 and results in state State1.

By inspection, we can see that
[forward,left,forward,forward,grab,left,shoot,
 left,forward,forward,right,forward,climb]
will solve the problem, so we must search to a depth of 13,
and have 7 actions to choose from, so a blind iterative-deepening
search like this must check on the order of 1.1x10**11 states.


Also, you may wish to keep in mind the following
differences between Haskell and Prolog:

[snip]



* Haskell code tends to be more succinct (as Paul
Johnson mentioned)


Not really an issue for this problem.



* Haskell code tends to run faster, and can often be
optimized to run at a speed on par with OCaml

* Prolog tends to be one of the slowest-running
programming languages


That largely depends on which compiler you use and what coding style
you follow.  I've known Prolog code outperform published Fortran for
the same problem, thanks to using a better algorithm that was easy to
express in Prolog and practically impossible in Fortran 77.

The Prolog results at http://shootout.alioth.debian.org/
are only for the open source system SWI Prolog, which is basically
a one-man effort.  The commercial SICStus Prolog is substantially
faster.  Some of the Prolog benchmark versions look distinctly odd.

It is certainly true that Prolog can be slow *if* you try to write
conventional imperative code in it, which many people do.  But then,
conventional imperative code isn't the best way to use Haskell either.

Prolog's strongly-typed-and-moded brother, Mercury, gives you a
combination of
- logic programming
- strict functional programming
- Haskell-like typeclasses
which makes it a candidate.

However, checking 1.1x10**11 states is going to take a while no matter
*what* language you use.  Looking at the problem again, we see that
if you can get the gold and shoot the wumpus, then you can certainly
get out again by retracing your steps, because the pits do not move
around.  So in the solution
[forward,left,forward,forward,grab,left,shoot,
 left,forward,forward,right,forward,climb]
the second line consists of steps that are entirely predictable
from the first.  So we *really* only have to search to a depth of 7,
checking 9.5x10**5 states.  That's a speedup of 117649, which is much
more than you are going to get from ANY programming language.

I should point out that Prolog is not well suited to *directly*
expressing rules like
Smelly(l1) =  (EXISTS l2 At(Wumpus,l2,s)  (l2=l1 OR Adjacent(l1,l2)))
This is going to require some programming.

Something that might be rather fun would be feeding the Wumpus World
axioms to the free theorem prover OTTER, which is quite impressive.

___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe