Difference between revisions of "List of partial functions"

From HaskellWiki
Jump to navigation Jump to search
m (More to do...)
 
(25 intermediate revisions by 6 users not shown)
Line 1: Line 1:
 
==Partial functions in Prelude==
 
==Partial functions in Prelude==
  +
  +
===Functions that aren't even partial===
  +
  +
{| class="wikitable"
  +
! Function
  +
! Witness
  +
|-
  +
| error
  +
| error "x"
  +
|-
  +
| undefined
  +
| undefined
  +
|}
   
 
===List functions===
 
===List functions===
   
  +
{| class="wikitable"
* maximum
 
  +
! Function
* minimum
 
  +
! Only partial for infinite lists
* head
 
  +
! Witness
* tail
 
  +
|-
* init
 
  +
| maximum
* last
 
  +
| No
* foldl1
 
  +
| maximum []
* foldl1'
 
  +
|-
* foldr1
 
  +
| minimum
* cycle
 
* !!
+
| No
  +
| minimum []
* genericIndex
 
  +
|-
* ... (todo)
 
  +
| 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"
* read
 
  +
! Function
* ... (todo)
 
  +
! 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==
   
  +
===Data.List===
... (todo)
 
  +
  +
{| 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==
   
  +
{| class="wikitable"
... (todo)
 
  +
! 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)