correct terminology for a function that yields

J

Joe Van Dyk

def foo
yield
end

foo do
puts "hey"
end


What's the correct description of what is going on there? I've got a
function foo. No arguments, right? Does it "take a block"? I know
it gives control to the block, but I'm not sure of the correct
terminology to use.

Joe
 
E

Edward Faulkner

--TRYliJ5NKNqkz5bu
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

def foo
yield
end
=20
foo do
puts "hey"
end
=20
=20
What's the correct description of what is going on there? I've got a
function foo. No arguments, right? Does it "take a block"? I know
it gives control to the block, but I'm not sure of the correct
terminology to use.

It does indeed "take a block". The block argument is implicit. You
could make it explicit if you wanted to:

def foo(&blk)
blk.call
end

In more general terms, any function that takes another function as an
argument (or returns one as a result) is known as a higher-order
function.

regards,
Ed

--TRYliJ5NKNqkz5bu
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: Digital signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)

iD8DBQFDqz73nhUz11p9MSARAsHCAJ0TkLQhz3t05LjsWtHfIpsHoUQF4QCg2s7L
JvuJJgWUn4q8urPjAcOftQc=
=ItPk
-----END PGP SIGNATURE-----

--TRYliJ5NKNqkz5bu--
 
J

Joe Van Dyk

It does indeed "take a block". The block argument is implicit. You
could make it explicit if you wanted to:

def foo(&blk)
blk.call
end

In more general terms, any function that takes another function as an
argument (or returns one as a result) is known as a higher-order
function.

Ok, thanks. I'm writing documentation for a domain-specific language
(in Ruby) that I created. People who use it are probably programmers,
but may not be experienced with Ruby, so I wanted to explain a little
bit about what's going on behind the scenes.
 
R

Robert Klemme

Note, that this has some performance implications though.
Ok, thanks. I'm writing documentation for a domain-specific language
(in Ruby) that I created. People who use it are probably programmers,
but may not be experienced with Ruby, so I wanted to explain a little
bit about what's going on behind the scenes.

You can as well call the block "anonymous function" or "anonymous
callback" IMHO. What I like about the "callback" variant is that it
precisely describes what's happening here: the caller provides a function
as hook that is called by the method.

Kind regards

robert
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,582
Members
45,057
Latest member
KetoBeezACVGummies

Latest Threads

Top