いきなり低レベルな話わりこんで
すまんす。

data HogeFuga = Hoge String | Fuga String

hogeList = [Fuga "", Hoge "aaa",Fuga "bbb"]

ってデータ定義とリストがあって

Hogeをリストから検索したいとき

findHoge = find isHoge hogeList
  where
    isHoge flg = case flg of {(Hoge _) -> True; _ -> False}

ってなかんじで書いてみたけど
どうにも case 式がダサイというか冗長なかんじ。

なんかスマートに書ける関数とかイディオムとか
ないですかね。

(某言語の instanceof みたいな)