2016-05-04 3 views
2

Termに1つの関数に対する複数の引数がある場合、ElmのNativeモジュールを使用して1つのFFIをJavascriptに変換する方法はありますか?ニッポンが周りをカリングする方法は?タプルについては何らかの予測があると思うので、それから離れて機能が落ち着かないとは思わなかったが、私の関数に型エラーが出ているとは思えない。それがうまくコンパイル複数のArityを持つElmネイティブ

module Foo where 

import Native.Foo 

import Date exposing (Date, Month) 
import Date.Extra.Core exposing (monthToInt)  

someDay : Int -> Month -> Int -> Date 
someDay y m d = 
    case Native.Today.someDay y (monthToInt m) d of 
    Ok d -> d 
    Err e -> Debug.crash e 

、しかし:私はそれを使用しようとしている

var make = function make(elm) { 
    elm.Native = elm.Native || {}; 
    elm.Native.Foo = elm.Native.Foo || {}; 

    var Result = Elm.Result.make(elm); 

    // Int -> Int -> Int -> Result String Date 
    function someDay (year,month,day) { 
     var d = new Date(year,month-1,day); 
     return isNaN(d.getTime()) 
      ? Result.Err('unable to make date: ' 
          + JSON.stringify({ 
           "year": year, 
           "month": month, 
           "day": day 
          }) 
         ) 
      : Result.Ok(d) 
    } 

    if (elm.Native.Foo.values) return elm.Native.Foo.values; 

    return elm.Native.Foo.values = { 
     'someDay': someDay 
    }; 
}; 

Elm.Native.Foo = {}; 
Elm.Native.Foo.make = make; 

と私のモジュールでは、私はそれはすでにカレーだと仮定しています:ここで私は私のNative/Foo.jsモジュールのために持っているものです私は私のアプリを実行しようとすると、私は次のエラーを取得しています:

TypeError: fun(...) is not a function 

は、私がここで間違ってやっているものはありますか?

答えて

2

生のjavascript関数をカレーするには、F2F3 ...関数を使用します。それらはデフォルトでグローバルスコープにありますので、これを修正するには次のようにしてください:

// ... 
    return elm.Native.Foo.values = { 
     'someDay': F3(someDay) 
    }; 
関連する問題