El problema es que LCursos no es una lista, es un tipo algebraico (LCursos) que tiene un constructor (LCursos) que tiene una lista ([Curso]).
Algo que podrías hacer es definir una función para obtener la lista:
lCursos :: LCursos -> [Curso]
lCursos (LCursos xs) = xs
y luego usarla al definir la lista por comprensión
getCursosNota e nota = [ getCod c | c <- (lCursos . getCursosEst) e, getNotaCurso c == nota ]
saludos