In Haskell, that’s “unit” or the empty tuple. It’s basically an object with no contents, behavior, or particular meaning, useful for representing “nothing”. It’s a solid thing that is never a surprise, unlike undefined or other languages’ nulls, which are holes in the language or errors waiting to happen.
You might argue that it’s a value and not a function, but Haskell doesn’t really differentiate the two anyway:
value :: String
value = "I'm always this string!"
funkyFunc :: String->String
funkyFunc name = "Rock on, "++name++", rock on!"
Is value a value, or is it a function that takes no arguments? There’s not really a difference, Haskell handles them both the same way: by lazily replacing anything matching the pattern on the left side of the equation with the right side of the equation at runtime.
In Haskell, that’s “unit” or the empty tuple. It’s basically an object with no contents, behavior, or particular meaning, useful for representing “nothing”. It’s a solid thing that is never a surprise, unlike undefined or other languages’ nulls, which are holes in the language or errors waiting to happen.
You might argue that it’s a value and not a function, but Haskell doesn’t really differentiate the two anyway:
value :: String value = "I'm always this string!" funkyFunc :: String -> String funkyFunc name = "Rock on, "++name++", rock on!"Is
valuea value, or is it a function that takes no arguments? There’s not really a difference, Haskell handles them both the same way: by lazily replacing anything matching the pattern on the left side of the equation with the right side of the equation at runtime.Mostly a great comment, but I wouldn’t compare unit to null, it’s more like the void type.