Да, есть разница, но более важно то, что подход к формированию строки таким образом ошибочен.
Для команды convert
нет специальных (отложенных) правил оценки, ито, что эта процедура видит в качестве первого аргумента здесь, является результатом (некоммутативного) умножения имени file
на имя ext
.И поэтому это не очень хороший способ объединить строку, потому что ее цель - не сначала тщательно объединить.
Существуют альтернативы.Вы можете объединить одно имя, а затем преобразовать его в строку или объединить непосредственно в строку (для которой команда convert / string не самая лучшая).
# I'm supposing that one does want the name`file` assigned
file:=myproject:
# Now suppose that one wants the result "myproject.for"
ext:=`for`:
convert(file.ext,string); # whoops
"myproject . `for`"
cat(file,".",ext); # produces the name `myproject.for`
myproject.for
convert(%,string);
"myproject.for"
sprintf("%a.%s",file,ext);
"myproject.for"