39 lines
1.2 KiB
JavaScript
39 lines
1.2 KiB
JavaScript
var classyGreeting = (firstName, lastName) =>
|
|
"The name's " + lastName + ", " + firstName + " " + lastName;
|
|
var yellGreeting = R.compose(R.toUpper, classyGreeting);
|
|
yellGreeting("James", "Bond"); //=> "THE NAME'S BOND, JAMES BOND"
|
|
|
|
R.compose(Math.abs, R.add(1), R.multiply(2))(-4); //=> 7
|
|
|
|
// get :: String -> Object -> Maybe *
|
|
var get = R.curry((propName, obj) => Maybe(obj[propName]));
|
|
|
|
// getStateCode :: Maybe String -> Maybe String
|
|
var getStateCode = R.composeK(
|
|
R.compose(Maybe.of, R.toUpper),
|
|
get("state"),
|
|
get("address"),
|
|
get("user")
|
|
);
|
|
getStateCode({ user: { address: { state: "ny" } } }); //=> Maybe.Just("NY")
|
|
getStateCode({}); //=> Maybe.Nothing()
|
|
|
|
var db = {
|
|
users: {
|
|
JOE: {
|
|
name: "Joe",
|
|
followers: ["STEVE", "SUZY"]
|
|
}
|
|
}
|
|
};
|
|
|
|
// We'll pretend to do a db lookup which returns a promise
|
|
var lookupUser = userId => Promise.resolve(db.users[userId]);
|
|
var lookupFollowers = user => Promise.resolve(user.followers);
|
|
lookupUser("JOE").then(lookupFollowers);
|
|
|
|
// followersForUser :: String -> Promise [UserId]
|
|
var followersForUser = R.composeP(lookupFollowers, lookupUser);
|
|
followersForUser("JOE").then(followers => console.log("Followers:", followers));
|
|
// Followers: ["STEVE","SUZY"]
|