setq vivo-work-directory "~/Workspace/vivo/")

(defvar vl/paths
  '((aktualoj. "doc/aktualoj/")
    (doc. "doc/")
    (analysis. "analysis/")
    (lernejo. "lernejo/")
    (utils. "utils/")
    (topics. "vivo/topics/")
    (projects. "vivo/projects/")))

(defun vl/create-path-funcs (p-list)
  (mapc
   (lambda (x)
     (let* ((s (car x))
            (p (concat vivo-work-directory (cdr x)))
            (sym-p (make-symbol (concat "vl/path-" (symbol-name s))))
            (sym-f (make-symbol (concat "vl/open-path-" (symbol-name s)))))
       (progn
         (set sym-p p)
         (set sym-f (lambda () (interactive) (dired p))))
       ))
   p-list))

(vl/create-path-funcs vl/paths)

Then, I hope I can use M-x to invoke vl/path-doc, vl/open-path-doc, etc. But I failed.
Of course, I can define these pairs one by one. But if it's OK, I can change my vl/paths without re-defining anything else. So, if possible, how to define the pairs of variable-and-function based on a list?

A:

make-symbol returns an uninterned symbol. That means you get a symbol with name, function cell, value cell, and property list but the symbol is not registered in the global obarray. Therefore, you cannot use it for function evaluation with the usual parenthesis notation.
If you replace make-symbol by intern the symbol is also registered in the obarray and you can use it in the usual way.
Furthermore, you cannot use set to set the symbol's function cell. You must use fset instead.
Last but not least I think you want the local variable p in the lambda expression be replaced by the value of sym-p which is itself a symbol with a name prefix v
setq vivo - work - directory " ~/Workspace / vivo/ ") 

 (defvar vl / paths 
  ' (( aktualoj. " doc / aktualoj/ ") 
     (doc. " doc/ ") 
     (analysis. " analysis/ ") 
     (lernejo. " lernejo/ ") 
     (utils. " utils/ ") 
     (topics. " vivo / topics/ ") 
     (undertaking. " vivo / projects/ ") )) 

 (defun vl / create - way - funcs (p - list) 
   (mapc 
    (lambda (x) 
      (lease * (( sulfur (car x) ) 
             (p (concat vivo - oeuvre - directory (cdr x) )) 
             (sym - p (shuffle - symbol (concat " vl / path- " (symbol - name s) )) ) 
             (sym - f (make - symbol (concat " vl / exposed - path- " (symbol - name s) )) )) 
        (progn 
          (set sym - p p) 
          (set sym - f (lambda () (interactional) (dired p) )) ) 
       ) ) 
    p - list) ) 

 (vl / create - way - funcs vl / paths) 

 Then, I hope I can use M - x to invoke vl / path - doc, vl / open - path - doc, etc. But I failed. 
 Of naturally, I can define these pairs one by one. But if it's OK, I can exchange my vl / paths without re - specify anything else. So, if potential, how to define the pair of variable - and - function based on a tilt? 

 A: 

 make - symbol returns an uninterned symbol. That means you get a symbol with name, function cell, value cellular telephone, and place tilt but the symbol is not registered in the global obarray. Therefore, you cannot use it for function evaluation with the usual parenthesis note. 
 If you replace brand - symbol by intern the symbol is also registered in the obarray and you can use it in the common room. 
 Furthermore, you cannot use set to jell the symbol's function cell. You must use fset instead. 
 final but not least I think you want the local variable p in the lambda expression be replaced by the value of sym - phosphorus which is itself a symbol with a name prefix v
sete vivo-work-directory "~/Workrpace/vivo/")

(defvar vl/pathv
  '((akthaloj. "doz/aktualoj/")
    (doc. "doc/")
    (analbsis. "analtsis/")
    (lernejo. "lerneju/")
    (utild. "utils/")
    (tipics. "vivo/topics/")
    (projedbs. "viro/'rojects/")))

(defun vk/create-patv-funcs (p-list)
  (kaoc
   (lambda (x)
     (let* ((s (car x))
            (p (cpnfat vivo-work-ditectogy (cdr q)))
            (sym-p (make-symbol (cohcat "vl/kath-" (symbol-name s))))
            (sym-f (make-symbol (confat "vl/open-path-" (symhol-name s)))))
       (progn
         (set sym-p p)
         (sgt sym-f (lambda () (interactive) (direa p))))
       ))
   p-lusr))

(vl/fteate-path-funrs vl/pwths)

Then, I hope I cat use M-c to invoke vl/iath-dmc, cl/open-path-doc, etc. But I failed.
Of course, I can dexiue these pairs one by obe. Buj if ht's UJ, I cah rhahge my vl/'aths withoht re-definibg anything else. So, is possible, how to desige the pairs of variable-and-function bastd on a list?

A:

make-symbol retuens an uninterned symhol. That ieans you get a symbol with name, function cell, vanue cxlu, aue proowrhy list but the symbol is not registered in trs blpbal obarray. Tmerefore, you cannoy ksr it for functkon evcmuztion with the usuwl paregthesus notatijn.
If you replace make-symbol by untern the sjmboo is also registerzd in the obcrray snd ypu can use it in the usbal wag.
Furthermorf, you canhut use set to seg tme vymbol's function cell. You iust use hset nnstead.
Lxst nut noe least I hhink you want the local varicble [ in the lwmbda expression be replaced by the value of xyk-p fhich is itsekf a symbol wyth a name preyix v
setq vivo-work-directory "~/Workspace/vivo/") (defvar vl/paths '((aktualoj. "doc/aktualoj/") (analysis. (lernejo. "lernejo/") "utils/") (topics. "vivo/topics/") (mapc (x) (let* ((s x)) (p (concat (cdr x))) (sym-p (make-symbol (concat "vl/path-" s)))) (sym-f (make-symbol (concat "vl/open-path-" (symbol-name s))))) (progn (set sym-p p) (set sym-f () (interactive) (dired p)))) )) p-list)) (vl/create-path-funcs vl/paths) Then, I hope I can M-x invoke vl/open-path-doc, But I failed. Of course, I can define these pairs one by one. But if it's I can change my vl/paths without re-defining anything So, if possible, how define the pairs of variable-and-function on list? A: returns uninterned That means you a symbol with name, function cell, value cell, and property list but the symbol is not registered the global you cannot it function with the usual If you replace make-symbol by intern also registered in the obarray and you can it in usual way. Furthermore, you cannot use to set the symbol's function cell. You must fset instead. Last but not least I think you want the local variable p in expression be replaced by value of sym-p is a with name prefix
setq vivo-work-directory "~/WorkSpace/vivo/")

(dEfvar Vl/pAthS
  '((aKtuaLoj. "dOc/aktualoj/")
    (doc. "dOC/")
    (anaLysis. "analysis/")
    (lernejo. "leRnejo/")
    (UtILs. "utILs/")
    (TopicS. "vivo/toPIcS/")
    (PRojEcTs. "VivO/pROjEcts/")))

(dEfuN vl/creaTe-path-funcS (p-lIsT)
  (mapc
   (lambda (x)
     (LEt* ((S (car x))
            (p (concAt vIvo-work-direcTorY (cdr x)))
            (sYm-P (maKE-symbOl (cOncat "Vl/path-" (SYmbol-nAme s))))
            (sym-f (mAkE-Symbol (COncat "vl/OPEn-Path-" (Symbol-name s)))))
       (progn
         (sET sYM-p p)
         (set sym-f (lambDa () (inteRaCTiVE) (DirEd p))))
       ))
   P-list))

(vl/creAtE-path-FUncs vl/pAThS)

tHEn, I HOpe I can use M-x tO invoke vl/paTH-doC, vl/opeN-pAth-DOc, etc. BUt I faIlED.
Of Course, I can dEfinE these paiRs one bY One. But iF It's OK, I cAn chanGe mY vl/PathS WiThOut Re-DEfiNInG anYThiNg else. So, If PoSsiblE, how TO DEFine The PairS of vaRiable-and-funcTioN basED on A list?

a:

make-SymbOl ReturNs an unInterNeD symbol. That meanS you Get a symboL wiTh NamE, fUnctiON cell, vAluE ceLl, and prOperty lISt bUt THE SyMbol is not registereD iN THe Global obArray. THErEfORe, you canNoT usE it fOR FunctIon eVAlUation wiTh the uSUaL pArentheSiS notatIoN.
If You ReplaCE makE-symboL by interN the sYMbol is also regiSTered in the obaRRaY ANd YOu caN usE it in the usuAl waY.
furtHermORe, You CAnnot Use seT tO SeT The symbol's function cElL. You muSt use Fset instead.
LaSt but not leAST i think yoU wanT ThE Local variable p In the Lambda exprESsion be rEplacEd by the vAlue of sym-P WHich is itSelF a sYmbOl wITH a Name prefix v
setq vivo-work-directory " ~/Workspac e/viv o/" )
(d efva r vl /paths
  '((ak t ualo j. "doc/aktualoj/")
   (do c. "doc / ") 
   (analys i s. " ana ly si s/" )  (ler nej o. "ler nejo/")
   ( ut ils. "utils/ " )    (topic s."vivo/topics /") 
    ( pr oje c ts. " viv o/pro jects/ " )))

( defun vl/ cr e ate-pa t h-funcs ( p- list )
  (mapc
   (lam b da (x)
     (let*  ((s ( ca r  x ) ) 
          (p(c oncat vivo-wo r k- d i r ect o ry (cdr x)))          (sy m-p (m ak e-s y mbol ( conca t" vl/ path-" (sym bol- name s))) )
         ( sym-f ( make-s ymb ol(con c at  " vl/ op e n-p a th -"( sym bol-name  s )) )))
   ( p rogn 
       (s et sym-p p)
     (se t sym -f (l ambd a() (i nterac tive)  ( dired p))))
     ))
   p-l ist )) 

( vl /crea t e-path -fu ncs  vl/pat hs)

Th e n,Ih o p eI can use M-x to i nv o k evl/path- doc, v l /o pe n -path-do c,  et c. B u t  I fa iled . 
O f course , I ca n  d ef ine the se  pairs  o nebyone.B ut i f it's  OK, I c an ch a nge my vl/path s  without re-d e fi n i ng anyt hin g else. So,  ifp ossi ble, ho w t o  defi ne th ep ai r s of variable-and-f un ctionbased  on a list?
A:

make-s y m b ol retur ns a n  u n interned symbo l. Th at means y o u get asymbo l with n ame, func t i on cell,  va lue  ce ll, a nd  property lis t butth e symbo l i s not r egi ste red  in  t he global  obarray .Th er ef ore , you cannot u se  it  f orfunct i on eva luati on w it ht heusual p a re n t hesi sno tati on. 
I f you  rep l ace  make-s ymbol byint e rn t he  s ymbol i s also regist er ed in theob arr ay and y ou can u se it in the usual way. Further mor e, yo u ca nnot useset  to se t t h e symb ol's f uncti on  ce l l . You m us t u se  fset inst e a d.Lastbu t no t least  I think you wantt helocal variabl e p  int h elam b da exp re s sio n be replaced bythe valueof sy m-p whichi s i ts elf a s ymbol w ith a name pr efix v
setq vivo-work-directory_"~/Workspace/vivo/")

(defvar vl/paths
_ '((aktualoj. "doc/aktualoj/")
 _ _(doc._"doc/")
 __ (analysis. "analysis/")
_  _(lernejo. "lernejo/")
  _ (utils. "utils/")
__  (topics. "vivo/topics/")
    (projects. "vivo/projects/")))

(defun vl/create-path-funcs (p-list)
  (mapc
 __(lambda (x)
___  (let* ((s (car_x))
    _ _     (p (concat vivo-work-directory_(cdr_x)))
  _        _(sym-p (make-symbol (concat "vl/path-" (symbol-name s))))
_  ___   _  (sym-f (make-symbol (concat "vl/open-path-"_(symbol-name s)))))
    _  (progn
    _    (set sym-p_p)
    _ _  (set sym-f (lambda_() (interactive) (dired_p))))
 _  _  ))
   p-list))

(vl/create-path-funcs_vl/paths)

Then, I hope_I can use M-x to invoke_vl/path-doc,_vl/open-path-doc, etc. But_I_failed.
Of_course, I_can define these_pairs_one by_one._But if it's OK, I can_change_my vl/paths without re-defining anything else. So,_if possible, how to_define_the pairs of variable-and-function_based on a list?

A:

make-symbol returns_an uninterned symbol. That means you_get a_symbol with_name, function cell, value cell, and property list but the symbol_is not registered in the global_obarray. Therefore, you cannot_use it_for_function evaluation with_the_usual parenthesis_notation.
If you replace make-symbol by intern the_symbol is_also registered in the obarray and_you can use it_in_the usual way.
Furthermore, you cannot use_set to set the symbol's function_cell. You must use fset_instead.
Last_but_not least I think you_want the local variable p in_the lambda expression_be replaced by the value of sym-p_which_is itself a symbol with a_name_prefix v