Haskellians,<br><br>i&#39;m sure i don&#39;t understand type classes, yet. Still, i was surprised at ghci&#39;s response to the code below. Clues gratefully accepted.<br><br>Best wishes,<br><br>--greg<br><br>-- transcript<br>
-- Prelude&gt; :l grn<br>-- [1 of 1] Compiling GeneticRegulatoryNetwork ( grn.hs, interpreted )<br><br>-- grn.hs:33:35:<br>-- &nbsp;&nbsp; Couldn&#39;t match expected type `b1&#39; (a rigid variable)<br>-- &nbsp;&nbsp; &nbsp;&nbsp; against inferred type `b&#39; (a rigid variable)
<br>-- &nbsp;&nbsp;&nbsp;&nbsp; `b1&#39; is bound by the type signature for `sequence&#39; at grn.hs:25:36<br>-- &nbsp;&nbsp;&nbsp;&nbsp; `b&#39; is bound by the instance declaration at grn.hs:31:0<br>-- &nbsp;&nbsp;&nbsp;&nbsp; Expected type: [b1]<br>-- &nbsp;&nbsp;&nbsp;&nbsp; Inferred type: [b]<br>
-- &nbsp;&nbsp; In the expression: molecules<br>-- &nbsp;&nbsp; In the definition of `sequence&#39;:<br>-- &nbsp;&nbsp; sequence (Site l1 molecules) = molecules<br>-- Failed, modules loaded: none.<br>-- Prelude&gt; <br><br>{-# OPTIONS -fglasgow-exts -fallow-undecidable-instances #-}
<br>-- -*- mode: Haskell;-*- <br>-- Filename:&nbsp;&nbsp;&nbsp; grn.hs <br>-- Authors:&nbsp;&nbsp;&nbsp;&nbsp; lgm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>-- Creation:&nbsp;&nbsp;&nbsp; Thu Dec&nbsp; 6 15:38:26 2007 <br>-- Copyright:&nbsp;&nbsp; Not supplied <br>-- Description: 
<br>-- ----------------------------------------------------------------<br><br>module GeneticRegulatoryNetwork<br>&nbsp;&nbsp;&nbsp; where<br><br>data Segment p = <br>&nbsp;&nbsp;&nbsp; Nil<br>&nbsp; | Section [p] (Segment p)<br>&nbsp;&nbsp;&nbsp; deriving (Eq, Show)<br>
<br>class BindingMolecule b l | b -&gt; l where<br>&nbsp;&nbsp;&nbsp; name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :: b -&gt; l<br>&nbsp;&nbsp;&nbsp; complement&nbsp; :: b -&gt; b<br>&nbsp;&nbsp;&nbsp; complements :: b -&gt; Bool<br><br>class Locale s l1 l2 | s -&gt; l1 l2 where<br>&nbsp;&nbsp;&nbsp; label&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :: s -&gt; l1
<br>&nbsp;&nbsp;&nbsp; sequence&nbsp;&nbsp;&nbsp; :: (BindingMolecule b l2) =&gt; s -&gt; [b]<br>&nbsp;&nbsp;&nbsp; provides&nbsp;&nbsp;&nbsp; :: (BindingMolecule b l2) =&gt; s -&gt; [b] -&gt; Bool<br>&nbsp;&nbsp;&nbsp; matches&nbsp;&nbsp;&nbsp;&nbsp; :: (BindingMolecule b l2) =&gt; s -&gt; [b] -&gt; Bool<br><br>data (BindingMolecule b l2) =&gt; Site b l1 l2 = Site l1 [b] deriving (Eq, Show)
<br><br>instance (BindingMolecule b l2) =&gt; Locale (Site b l1 l2) l1 l2 where<br>&nbsp;&nbsp;&nbsp; label&nbsp;&nbsp;&nbsp; (Site l1 _)&nbsp; = l1<br>&nbsp;&nbsp;&nbsp; sequence (Site l1 molecules) = molecules<br>&nbsp;&nbsp;&nbsp; provides (Site l1 molecules) molecules&#39; = False -- tbd
<br>&nbsp;&nbsp;&nbsp; matches&nbsp; (Site l1 molecules) molecules&#39; = False -- tbd<br><br><br clear="all"><br>-- <br>L.G. Meredith<br>Managing Partner<br>Biosimilarity LLC<br>505 N 72nd St<br>Seattle, WA 98103<br><br>+1 206.650.3740<br><br>
<a href="http://biosimilarity.blogspot.com">http://biosimilarity.blogspot.com</a>