Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

passing functions in nim

I'm having issues passing math functions (procs) in Nim (version 0.10.2).

import math

var s1 = @[1.1, 1.2, 1.3, 1.4]
var s2 = map(s1, math.sqrt)

I get the error

Error: 'sqrt' cannot be passed to a procvar

If I write a wrapper function for sqrt, it works just fine.

proc fxn(x: float): float = math.sqrt(x)
var s2 = map(s1, fxn)

I'm using square root and map as examples, but eventually I'll be passing sqrt (and other math procs) to another proc. Is there a way to do this without writing wrapper functions?

like image 841
COM Avatar asked Apr 07 '15 16:04

COM


1 Answers

There are plans to make this work by default, by enabling the procvar pragma by default and making a wrapping procvar for C-imported procs: https://github.com/nim-lang/Nim/issues/2172

like image 152
def- Avatar answered Sep 28 '22 05:09

def-