代码之家  ›  专栏  ›  技术社区  ›  Rouan van Dalen

如何在PureScript FFI中映射0参数JavaScript函数

  •  4
  • Rouan van Dalen  · 技术社区  · 7 年前

    我正在尝试使用FFI将以下JavaScript函数导入PureScript:

    function getGreeting() {
      return "Hi, welcome to the show."
    }
    

    但我不确定应该是什么类型。我最接近的是:

    foreign import getGreeting :: Unit -> String
    

    getGreeting 保留函数,而不是将其转换为常数。

    var getGreeting = function (v) {
      return "Hi, welcome to the show.";
    };
    

    有没有办法摆脱这种情况 v

    2 回复  |  直到 7 年前
        1
  •  3
  •   gb.    7 年前

    Unit -> String forall a. a -> String a 由于参数性,未使用,因此函数仍然必须是常数。

        2
  •  3
  •   paluh    7 年前

    purescript-functions 在这种情况下,如果你真的需要从Purescript中调用这个函数(因为我认为它 IS 实际上只是一个常数)您可以尝试:

    module Main where
    
    import Prelude
    import Control.Monad.Eff (Eff)
    import Control.Monad.Eff.Console (CONSOLE, log)
    import Data.Function.Uncurried (Fn0, runFn0)
    
    foreign import getString ∷ Fn0 String
    
    main :: forall e. Eff (console :: CONSOLE | e) Unit
    main = do
      log (runFn0 getString)
    

    /* global exports */
    "use strict";
    
    // module Main
    
    exports.getString = function() {
      return "my constant string ;-)";
    };