unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
From: Gene <gene.sullivan@gmail.com>
To: help-gnu-emacs@gnu.org
Subject: Re: Defining  functions on the fly
Date: Mon, 15 Jun 2015 16:51:20 -0700 (PDT)	[thread overview]
Message-ID: <76f991fc-d00f-498f-b586-d8bb9ea96c20@googlegroups.com> (raw)
In-Reply-To: <mailman.5020.1434360277.904.help-gnu-emacs@gnu.org>

On Monday, June 15, 2015 at 5:24:40 AM UTC-4, Andreas Röhler wrote:
> Hi,
> 
> have a bunch of subroutines which are useful in several modes - 
> beginning/end of expressions, string positions, comments etc.
> 
> Now every mode should get its own prefix.
> Can't write
> 
> (defun (concat "current-prefix-" foo) ())
> 
> as defun expects a symbol.
> 
> Exists "fset" - is there a recommended way to go?

I recommend using lambda to experimentally develop what you think of as a function of the sort defun is typically used typically used to define.

Once the function's actual definition is done via lambda it can be bound to a symbol via fset

(fset (function name-of-function)
 (lambda (arg)
  "docstring"
  ; Body goes here
 )
)

Of course the anonymous version of the function can be used via higher order functions such as `apply' and `mapcar' so function development and testing can be furthered before one gets around to deciding to keep it around and name it for convenient future use.

This strategy is pretty much applicable in Scheme as well

(define name-of-function
 (lambda (arg)
  ;body
 )
)

I hope this helps.

Gene



  parent reply	other threads:[~2015-06-15 23:51 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <mailman.5020.1434360277.904.help-gnu-emacs@gnu.org>
2015-06-15  9:57 ` Defining functions on the fly Pascal J. Bourguignon
2015-06-15 11:21   ` Andreas Röhler
2015-06-15 11:52     ` Tassilo Horn
2015-06-15 12:06       ` Andreas Röhler
2015-06-15 12:43       ` Andreas Röhler
2015-06-15 23:51 ` Gene [this message]
2015-06-16  1:14   ` Stefan Monnier
2015-06-17  0:24     ` Gene
2015-06-17  1:12       ` Stefan Monnier
2015-06-16  5:47   ` Andreas Röhler
2015-06-15  9:24 Andreas Röhler
2015-06-15  9:32 ` Dmitry Gutov
2015-06-15  9:47 ` Alexis
2015-06-15 10:20   ` Andreas Röhler
2015-06-15 10:37     ` Alexis
2015-06-15 10:41     ` Michael Heerdegen
2015-06-15 10:42     ` Tassilo Horn
2015-06-15 11:01       ` Alexis
2015-06-15 11:19       ` Michael Heerdegen
2015-06-15 11:24         ` Tassilo Horn
2015-06-15 11:31           ` Michael Heerdegen
2015-06-15 10:00 ` Tassilo Horn
2015-06-15 10:33   ` Andreas Röhler
     [not found] ` <mailman.5022.1434361680.904.help-gnu-emacs@gnu.org>
2015-06-15 12:52   ` Stefan Monnier
2015-06-16  5:59     ` Andreas Röhler
2015-06-16  7:01       ` Tassilo Horn
2015-06-16  9:22         ` Andreas Röhler
2015-06-16 11:12           ` Tassilo Horn
2015-06-16 11:40             ` Andreas Röhler
2015-06-16 13:10               ` Tassilo Horn
2015-06-16 15:46                 ` Andreas Röhler
     [not found]                 ` <mailman.5109.1434469628.904.help-gnu-emacs@gnu.org>
2015-06-16 22:34                   ` Stefan Monnier
     [not found]             ` <mailman.5090.1434454815.904.help-gnu-emacs@gnu.org>
2015-06-16 16:13               ` Pascal J. Bourguignon
2015-06-16 18:30                 ` Andreas Röhler
2015-06-16  9:42         ` Andreas Röhler
     [not found]         ` <mailman.5084.1434446560.904.help-gnu-emacs@gnu.org>
2015-06-16  9:50           ` Pascal J. Bourguignon
2015-06-16 10:26             ` Andreas Röhler
     [not found]             ` <mailman.5087.1434450412.904.help-gnu-emacs@gnu.org>
2015-06-16 11:35               ` Pascal J. Bourguignon
     [not found]         ` <mailman.5085.1434447782.904.help-gnu-emacs@gnu.org>
2015-06-16 22:32           ` Stefan Monnier
     [not found]     ` <mailman.5075.1434434385.904.help-gnu-emacs@gnu.org>
2015-06-16 22:23       ` Stefan Monnier
2015-06-17  6:13         ` Andreas Röhler
     [not found]         ` <mailman.5137.1434522533.904.help-gnu-emacs@gnu.org>
2015-06-17 14:30           ` Stefan Monnier
2015-06-17 16:40             ` Andreas Röhler

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=76f991fc-d00f-498f-b586-d8bb9ea96c20@googlegroups.com \
    --to=gene.sullivan@gmail.com \
    --cc=help-gnu-emacs@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).