2016-09-18 3 views
1

は、私はそのようなプログラムを持っている:[nullValue] == []を満たすnullValueはありますか?

foo x = if x == 0 
      then [] 
      else [x] 

をしかし、私はそれをこのように作ってみる:

foo x = (:[]) $ if x == 0 
        then nullValue 
        else x 

私はトラブルnullValueが満たす[nullValue] == []は、誰かがこのうち私を助けることができることは何かを考え出すを持っていますか? (Maybeを導入すると悪化する)

ハードルはタイプシステム/タイプチェックですか?

+2

'null'はプレリュード関数です。[http://hackage.haskell.org/package/base-4.9.0.0/docs/Prelude.html#v:null]を参照してください。 '[a] == []'のような 'a'はありません。一つは空のリストで、もう一つはそうではありません。あなたは本当の問題を解決しようとしていますか? –

答えて

4

:は、空でないリストのコンストラクタです。その結果は、それを適用するオペランドに関係なく、空のリストになることはありません。

0

Data.Maybeから絞ることができる場合は、Just/Nothingをあなたのリストに含めることができます。

foo x = catMaybes . (:[]) $ if x == 0 
           then Nothing 
           else Just x 
関連する問題