From: Siraaj Khandkar Date: Sat, 28 Sep 2013 20:48:45 +0000 (-0400) Subject: Abstract PhenoType. X-Git-Url: https://git.xandkar.net/?p=cellular-automata.git;a=commitdiff_plain;h=4b18b7df65b1fc0a1bd15b5f0ddfc82a338485b8 Abstract PhenoType. --- diff --git a/polymorphism/001/src/polymorphism.ml b/polymorphism/001/src/polymorphism.ml index 0f15a3a..f94d5ad 100644 --- a/polymorphism/001/src/polymorphism.ml +++ b/polymorphism/001/src/polymorphism.ml @@ -150,8 +150,25 @@ module State = struct end -module PhenoType = struct - type t = string +module PhenoType : sig + type t + + val create : char -> Terminal.color option -> t + + val to_string : t -> string +end = struct + type t = { color : Terminal.color option + ; character : char + } + + let create character color = + {color; character} + + let to_string = function + | {color=None; character} -> + String.of_char character + | {color=Some c; character} -> + Terminal.string_with_color (String.of_char character) c end @@ -195,8 +212,8 @@ module Conway : RULE = struct string_of_state let pheno_of_state : (state -> PhenoType.t) = function - | D -> " " - | A -> "o" + | D -> PhenoType.create ' ' None + | A -> PhenoType.create 'o' None let int_of_msg msg = msg |> state_of_string |> int_of_state @@ -267,7 +284,7 @@ end = struct } let cell_to_string cell = - cell.data.Cell.pheno + PhenoType.to_string cell.data.Cell.pheno let print t = Terminal.reset ();