Skip to content

Instantly share code, notes, and snippets.

@sjednac
Created October 4, 2016 06:43
Show Gist options
  • Save sjednac/9ae64d3d1da23c97ae627d70d59158d5 to your computer and use it in GitHub Desktop.
Save sjednac/9ae64d3d1da23c97ae627d70d59158d5 to your computer and use it in GitHub Desktop.
Map, filter and foldLeft using an Emoji example in Scala

Original idea can be found here.

object EmojiMeal extends App {
type Ingredient = String
type Meal = String
type Person = String
type Poop = String
def cook(item: Ingredient): Meal = item match {
case "๐Ÿฎ" => "๐Ÿ”"
case "๐Ÿ " => "๐ŸŸ"
case "๐Ÿ”" => "๐Ÿ—"
case "๐ŸŒฝ" => "๐Ÿฟ"
case _ => "๐Ÿฒ"
}
def isVegetarian(meal: Meal): Boolean = meal match {
case "๐ŸŸ" => true
case "๐Ÿฟ" => true
case _ => false
}
def eat(person: Person, meal: Meal): Poop = "๐Ÿ’ฉ"
val ingredients = List("๐Ÿฎ", "๐Ÿ ", "๐Ÿ”", "๐ŸŒฝ")
println(s"Ingredients: ${ingredients.mkString(",")}")
val meals = ingredients.map(cook)
println(s"Meals: ${meals.mkString(",")}")
val vegetarianMeals = meals.filter(isVegetarian)
println(s"Vegetarian meals: ${vegetarianMeals.mkString(",")}")
val eaten = vegetarianMeals.foldLeft("๐Ÿ˜Ž")(eat)
println(s"Eaten: ${eaten}")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment