List of partial functions: Difference between revisions
Josephcsible (talk | contribs) ("filter (const False) [1..]" and "dropWhile (const True) [1..]" are both bottom) |
m (More to do...) |
||
(2 intermediate revisions by one other user not shown) | |||
Line 3: | Line 3: | ||
===Functions that aren't even partial=== | ===Functions that aren't even partial=== | ||
{| class="wikitable" | |||
! Function | |||
! Witness | |||
|- | |||
| error | |||
| error "x" | |||
|- | |||
| undefined | |||
| undefined | |||
|} | |||
===List functions=== | ===List functions=== | ||
{| class="wikitable" | |||
! 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=== | ===Other=== | ||
{| class="wikitable" | |||
! 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 () () | |||
|- | |||
|colspan="2" | ... (todo) | |||
|} | |||
==Partial functions in other base libraries== | ==Partial functions in other base libraries== | ||
Line 50: | Line 147: | ||
===Data.List=== | ===Data.List=== | ||
{| class="wikitable" | |||
! Function | |||
! Only partial for infinite lists | |||
! Witness | |||
|- | |||
| genericIndex | |||
| No | |||
| genericIndex [] 0 | |||
|- | |||
| genericLength | |||
| Yes | |||
| genericLength [0..] :: Integer | |||
|} | |||
===Data.Map=== | ===Data.Map=== | ||
{| class="wikitable" | |||
! Function | |||
! Witness | |||
|- | |||
| (!) | |||
| Map.empty ! () | |||
|} | |||
===Data.Maybe=== | ===Data.Maybe=== | ||
{| class="wikitable" | |||
! Function | |||
! Witness | |||
|- | |||
| fromJust | |||
| fromJust Nothing | |||
|} | |||
==Partial functions in other Haskell Platform packages== | ==Partial functions in other Haskell Platform packages== | ||
... (todo) | {| class="wikitable" | ||
! Function | |||
! Witness | |||
|- | |||
|colspan="2" | ... (todo) | |||
|} | |||
[[Category:Pages under construction]] |
Latest revision as of 04:31, 26 April 2021
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) |