# List of partial functions

From HaskellWiki

Revision as of 22:14, 23 February 2019 by Josephcsible (talk | contribs) (add witnesses for all of them)

## Contents

## Partial functions in Prelude

### Functions that aren't even partial

Function | Witness |
---|---|

error | error "x" |

undefined | undefined |

### List functions

Function | Only partial for infinite lists | Witness |
---|---|---|

maximum | No | maximum [] |

minimum | No | minimum [] |

head | No | head [] |

tail | No | tail [] |

init | No | init [] |

last | No | last [] |

foldl | Yes | foldl (const (const ())) () [0..] |

foldl' | Yes | foldl' (const (const ())) () [0..] |

foldl1 | No | foldl1 (const (const ())) [] |

foldl1' | No | foldl1' (const (const ())) [] |

foldr1 | No | foldr1 (const (const ())) [] |

cycle | No | cycle [] |

!! | No | [] !! 0 |

filter | Yes | filter (const False) [0..] |

dropWhile | Yes | dropWhile (const True) [0..] |

length | Yes | length [0..] |

sum | Yes | sum [0..] |

product | Yes | product [0..] |

reverse | Yes | reverse [0..] |

### Other

Function | Witness |
---|---|

read | read "x" :: Int |

quot | 1 `quot` 0 |

rem | 1 `rem` 0 |

quotRem | 1 `quotRem` 0 |

div | 1 `div` 0 |

mod | 1 `mod` 0 |

divMod | 1 `divMod` 0 |

succ | succ () |

pred | pred () |

toEnum | toEnum 1 :: () |

(^) | 1 ^ (-1) |

fail | fail "x" :: Either () () |

... (todo) |

## Partial functions in other base libraries

### Data.List

Function | Only partial for infinite lists | Witness |
---|---|---|

genericIndex | No | genericIndex [] 0 |

genericLength | Yes | genericLength [0..] :: Integer |

### Data.Map

Function | Witness |
---|---|

(!) | Map.empty ! () |

### Data.Maybe

Function | Witness |
---|---|

fromJust | fromJust Nothing |

## Partial functions in other Haskell Platform packages

Function | Witness |
---|---|

... (todo) |