Hello folks,
just a quickie here and would appreciate any help...
In this expression:
instance OBSERVATIONS Drinkability WaterWell Volunteer where
observe (Drinkability waterWell) volunteer = volunteer {vReport =
if (odorQuale (perceive (Odor waterWell) volunteer) == True && clarityQuale (perceive (Clarity waterWell) volunteer) == True && fullnessQuale (perceive (Fullness waterWell) volunteer) == True) then (if (honesty) then "drinkable" else "undrinkable") else (if (honesty) then "undrinkable" else "drinkable")}
I get the following
error:
Couldn't match expected type `Bool'
against inferred type `Volunteer -> Bool'
In the expression: honesty
In the expression: (if honesty then "drinkable" else "undrinkable")
In the `vReport' field of a record
It is worth mention that Volunteer id defined as follows:
data Volunteer = Volunteer {vid:: Id, vloc:: Id, odorQuale:: Bool, clarityQuale:: Bool, fullnessQuale:: Bool, vQuale:: Bool, vReputation:: Float, honesty:: Bool, vReport:: Report} deriving Show
Where Report is defined as:
type Report = String
I understand that the vReport field is not receiving a String as it should, but I have completely failed in knowing why! I just
think the nesting of the if statements is correct but wonder why is it not working. What is the correct code to do what I intend from the abofe nonfunctioning if statements?
cheers,
m