コードがC言語の該当するコードよりも冗長であることは明らかです。変更したコードは型検査されておそらく型エラーが発生します。他方、C言語で書かれたコードについては同じことは起きません。リストのノードを確保/解放する問題に対処していないことを指摘しておこうと思います。これは複雑な表現を避けることを意図しています。宣言することができます。宣言することでそのようなリストをより使い易くすることができます。データ観は根本的にデータ観型よりも一般的で柔軟です。おいてデータ観を用いてのみ適切に取り扱うことができます。