code: def test_softmax_expr():
      expr = ast.SoftmaxExpr([ast.NumVal(2.0), ast.NumVal(3.0)])
  
      expected_code = r"""
  module Model where
  score :: [Double] -> [Double]
  score input =
      softmax ([2.0, 3.0])
  softmax :: [Double] -> [Double]
  softmax x =
      let
          m = maximum x
          exps = map (\i -> exp (i - m)) x
          sumExps = sum exps
      in map (\i -> i / sumExps) exps
  """
  
      interpreter = HaskellInterpreter()
      assert_code_equal(interpreter.interpret(expr), expected_code)
  
imports: from itertools import product
  import pytest
  from m2cgen import ast
  from m2cgen.interpreters import HaskellInterpreter
  from tests.utils import assert_code_equal
label_desc: Use image node_id 18 for calling a global function with example usage: test_softmax_expr() without return types