Ha Go
HaGo is a go playing program written in the functional programming language Haskell. It uses the Tcl [1] scripting language as exposed by the TclHaskell library. [2]
OK, enough technical details. What are the cons and pros?
Cons:
- It doesn't play very fast.
- It doesn't play very intelligently yet.
Pros:
- It is portable, in theory at least to WinX, Linux and Solaris
- It is very readable. Basic move generation looks like this:
generateMove :: Game -> Move generateMove g = produceMove (toMove g) g stdMoveGenerator stdMoveGenerator :: MoveGenerator stdMoveGenerator = inOrder $ map (filterMG notOnKoPoint) [ saveMyAtariGroups , takeHisAtariGroups , filterMG inBigLiberty allMoves `allBecause` "I'm just a stupid computer, I'll play in a large lib" , alWaysPass `allBecause` "Can't find a move, so I'll pass" ]
(You might have to learn Haskell, but it beats C IMHO)
The standard move generator first tries to save strings in Atari by extending or capturing surrounding groups, then takes any oppposing strings in Atari. When neither of these yields a plausible move, the computer will play randomly inside of a 'big' liberty or pass (when there are no big liberties left).
If you are interested in obtaining a version, you can send me a mail.
[1] scriptics.com (The Script Archive) apparently collapsed some time in 2021, after having been in existence since at least 1998. This link was posted in 2001. Snapshots of the site can be viewed here. Note that the scripts themselves may be housed in a different archive structure, if preserved at all.
[2] This site was snapshotted in the Internet Archive from 2000 to 2007. The link, again, was posted in 2001.