Ha Go

    Keywords: Software

HaGo is a go playing program written in the functional programming language [ext] Haskell. It uses the [ext] Tcl scripting language as exposed by the [ext] TclHaskell library.

OK, enough technical details. What are the cons and pros?


  • It doesn't play very fast.
  • It doesn't play very intelligently yet.


  • 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 [email] me a mail.

Anonymous: The author seems not to react to (this) email (address) anymore.

Ha Go last edited by JanDeWit on May 24, 2010 - 23:21
RecentChanges · StartingPoints · About
Edit page ·Search · Related · Page info · Latest diff
[Welcome to Sensei's Library!]
Search position
Page history
Latest page diff
Partner sites:
Go Teaching Ladder
Login / Prefs
Sensei's Library