Question: Is there a compact way to get the head of a list as a Some when the list is non-empty, getting None otherwise?

This is what I am currently doing,

```
val ms = moves.filter { ...some predicate... }
if (ms.nonEmpty) Some(ms.head) else None

```

Answer: 
Try `headOption`. The [API docs](https://www.scala-lang.org/api/current/scala/collection/immutable/List.html) are your friend.

Note also that `find` does exactly a `filter` plus `headOption`: it takes one item if there and puts it in an option, and otherwise gives `None`.
The answer above is correct for this case, but where you just need to simplify the second line, I also recommend this handy utility [mentioned here](https://stackoverflow.com/questions/12728678/simplify-if-x-somey-else-none) (adopted from Scalaz):

```
implicit class boolean2Option(val value: Boolean) extends AnyVal {
  def option[A](f: => A) = if (value) Some(f) else None
}

```

Allows this:

```
if (condition) Some(result) else None

```

to become this:

```
condition option result

```