[Welcome to Sensei's Library!]

StartingPoints
ReferenceSection
About


Referenced by
WhyDidYouStartGo
ComputerGoLanguag...

Homepages
JanDeWit

 

Ha Go
   

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?

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



This is a copy of the living page "Ha Go" at Sensei's Library.
(OC) 2003 the Authors, published under the OpenContent License V1.0.