Cómo estás implementando?
Se me ocurre que estás definiendo las funciones en una sesión del interprete, puede ser? Haciendo eso efectivamente pude reproducir tu error.
Lo que sucede es que al escribir cada caso del pattern matching de spL estás redefiniendo la función. Queda entonces definida parcial con el último caso.
El intérprete es útil para testear y hacer cierto desarrollo interactivo, pero como con casi todo lenguaje, casi siempre la forma más adecuada de trabajar es escribiendo código en un archivo.