edwinb / TypeDD-Samples

Sample code from "Type Driven Development with Idris"

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Can't find implementation of Ord a

williamdemeo opened this issue · comments

I am new to Idris, so forgive me if this a dumb question.

When doing Exercise 5 on page 101 of the TypeDD book, my solution (which is the same as the suggested solution in this repository) exhibits the following behavior when I launch idris ex_4_1.idr:

Type checking ./ex_4_1.idr
*ex_4_1> maxMaybe Nothing Nothing
Can't find implementation for Ord a

According to the definition of maxMaybe (included below for reference), it seems the answer should be Nothing. Is this an error? Do I not have Idris set up correctly?

maxMaybe : Ord a => Maybe a -> Maybe a -> Maybe a
maxMaybe Nothing Nothing = Nothing
maxMaybe Nothing (Just y) = Just y
maxMaybe (Just x) Nothing = Just x
maxMaybe (Just x) (Just y) = Just (max x y)

This is because at the REPL Idris doesn't know what type the 'Maybe' contains, since you haven't explicitly specified. It won't, in general, infer a type - in programs you have to give top level types - but it does make a best effort at the REPL.

(Sorry to be slow, I haven't been paying attention to this repo... probably a better place to ask for a quicker response is the idris mailing list)