2017-06-29 19 views
1

をJavaScriptの関数をインポートすると、「Purescriptすることにより例」本以下、Iは、配列の先頭を取得するためにJSファイルを作成しました:purescriptのFFIの種類は安全にpurescript FFIを試し

exports.head = function(arr) { 
    return arr[0]; 
}; 

とでどのように私はタイプUndefined aの値を使用しない、今

foreign import data Undefined :: Type -> Type 
foreign import head :: forall a. Array a -> Undefined a 

:purescriptは、私は、配列が空のときundefinedが返さ示すために、ヘッドの型シグネチャのための新しいUndefinedデータを宣言しますか?どの機能を定義する必要がありますか?aですのでどこでも使用できますか?

foreign import isUndefined :: forall a. Undefined a -> Boolean 

:本の中で 例は単に関数を定義することにより、以下の

exports.isUndefined = function(value) { 
    return value === undefined; 
}; 

が、私のようなものが必要です:

foreign import getFromUndefined :: forall a. Undefined a -> a 

がでその関数を記述することが可能ですJS、その場合、Undefined aが実際にundefinedのときに返すものは何ですか? または、タイプUndefined aを再定義して、それ以上のパターンマッチングを許可することができます a?

答えて

1

あなたはisUndefinedを定義するために何をしたか再利用することで、代わりに

foreign import fromUndefinedWithDefault :: forall a. a -> Undefined a -> a 

のようなものを実装することができます。

私は

bad :: Void 
bad = getFromUndefined (head []) 
を定義するためにそれを使用することができますので、あなたが書いたタイプが、理由は安全に実装することはできません
関連する問題