List of partial functions: Difference between revisions

From HaskellWiki
m (More to do...)
 
(13 intermediate revisions by 6 users not shown)
Line 1: Line 1:
==Partial functions in Prelude==
==Partial functions in Prelude==


===List functions===
===Functions that aren't even partial===


* maximum
{| class="wikitable"
* minimum
! Function
* head
! Witness
* tail
|-
* init
| error
* last
| error "x"
* foldl
|-
* foldl'
| undefined
* foldl1
| undefined
* foldl1'
|}
* foldr1
* scanl1
* scanr1
* cycle
* !!
* genericIndex
* genericLength
* length
* sum
* reverse
* ... (todo)


===Maybe functions===
===List functions===


* fromJust
{| 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===


* 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==


... (todo)
===Data.List===
 
{| class="wikitable"
! Function
! Only partial for infinite lists
! Witness
|-
| genericIndex
| No
| genericIndex [] 0
|-
| genericLength
| Yes
| genericLength [0..] :: Integer
|}
 
===Data.Map===
 
{| class="wikitable"
! Function
! Witness
|-
| (!)
| Map.empty ! ()
|}
 
===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)