Encadeamento de funções parciais com andThen em Scala

Vamos reutilizar exemplos do Daily scala:

type PF = PartialFunction[Int,Int]

val pf1 : PF = {case 1 => 2}                      

val pf2 : PF = {case 2 => 3}                      

e vamos adicionar:

val pf3 : PF = {case 3 => 4}

andThen funciona conforme o esperado aqui:

pf1 andThen pf2 isDefinedAt(x)

retornatrue iffx == 1 (na realidade,pf2 não precisa ser uma função parcial)

No entanto, eu esperava que:

pf1 andThen pf3 isDefinedAt(x)

retornariafalse para todosx (ou seja, se se pf1 estiver definido, verifique se pf3), mas ele não valida e apenas pf1.

No final,pf1 andThen pf3 lift(x) sempre resulta em um MatchError. Eu preferiria obter None ... Eu posso obter esse comportamento levantando cada função, como empf1.lift(x).flatMap(pf3.lift) mas existe alguma maneira mais fácil de usar a API PartialFunction pura? (e sem levantar cada função parcial individualmente?)

questionAnswers(3)

yourAnswerToTheQuestion