matdes
Joined 14 years ago
Joined 14 years ago
:: means "the stuff after this is the type signature"
Normally, a type signature can be as simple as something like
'x' :: Char
which is the type signature of the character 'x'. Looking at the type signature of 12 shows two parts "Num a =>" and "a". This can be read as "it returns a generic type `a` that must be an instance of the type class Num", which sounds really complicated but isn't.
The "Num a =>" is a type class constraint on the returned type "a". Type classes are basically like interfaces, they set up constraints and methods that need to be implemented for that type, analogous to how in other languages a class can implement an interface. For example, the Eq type class mandates you define the (==) and (/=) methods for that type, analogous to how something like the interface Comparable in Java requires you to define the compareTo method.
Thus the concrete type "Integer" is an instance of type class "Eq" because it implements those (==) and (/=)
Num is an example of a type class, just like Eq. But Num requires you to define a few more methods
class Num a where
(+) :: a -> a -> a
(*) :: a -> a -> a
(-) :: a -> a -> a
negate :: a -> a
abs :: a -> a
signum :: a -> a
fromInteger :: Integer -> a
So all of the things you think of as "numbers" are all types that implement "Num", e.g. an Integer, a Float, a Double.So going back, "12 :: Num a => a" means 12 can be any type which implements Num, which is really just a fancy way of saying "this number can be cast into any numeric type". You can perform this casting manually!
λ (5 + 7) :: Integer
12:: Integer
λ (5 + 7) :: Float
12.0:: Floatyes?
> So what does it mean to write functional tests? I'd argue that writing modular React components is a form of functional testing. Devcards[1] is similar, and looks to me exactly like what would be considered functional testing. These two workflows feel much more natural than testing UIs methods like automated selenium browser interactions to generate screenshots.
no.
Significant overhead costs to go from nothing to steady-state instantaneously would be enough to scare me.
Model is a well-defined term in the domain-driven design world, as in "Domain Model"
Lotus was never a ruby web application framework. Guess Apple's going to have to change the name of Swift because of that other programming language, amirite?
c.f. "You are hurting your cause by being angry"
try to be less of a trope.
embrace OO
You are correct that you should be writing your actual angular code in those separate files. And doesn't it make sense that the export of a controller file is an injectable controller? None of this "dependency injection via a string which gets turned into a reference to real code later"