List of partial functions: Difference between revisions

From HaskellWiki
("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===


* error
{| class="wikitable"
* undefined
! Function
! Witness
|-
| error
| error "x"
|-
| undefined
| undefined
|}


===List functions===
===List functions===


* maximum
{| class="wikitable"
* minimum
! Function
* head
! Only partial for infinite lists
* tail
! Witness
* init
|-
* last
| maximum
* foldl ()
| No
* foldl' ()
| maximum []
* foldl1
|-
* foldl1'
| minimum
* foldr1
| No
* scanr ()
| minimum []
* scanr1 ()
|-
* cycle
| head
* !!
| No
* filter ()
| head []
* dropWhile ()
|-
* length (∞)
| tail
* sum (∞)
| No
* product (∞)
| tail []
* reverse (∞)
|-
| 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===


* read
{| class="wikitable"
* quot
! Function
* rem
! Witness
* quotRem
|-
* div
| read
* mod
| read "x" :: Int
* divMod
|-
* succ
| quot
* pred
| 1 `quot` 0
* toEnum
|-
* (^)
| rem
* fail
| 1 `rem` 0
* ... (todo)
|-
| 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===


* genericIndex
{| class="wikitable"
* genericLength (∞)
! 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===


* fromJust
{| 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)
|}


NB. Functions marked with (∞) are partial because the function will not terminate if given an infinite list.
[[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)