Именования в функциональных языках
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 15.06.09 13:49
Оценка:
Добрый день!

Почему программируя на функциональных языках люди дают имена переменным из одной буквы?

Символ " ' " часто используют, это производное значение?


Например код монады Stateотсюда
Автор(ы): Евгений Кирпичев aka jkff
Дата: 28.12.2008
Статья рассказывает о том, что такое монады Haskell, приводятся примеры, иллюстрирующие эту концепцию.

instance Monad (State s) where
    return a = State dontChangeStateAndReturnA
        where dontChangeStateAndReturnA s = (a, s)

    -- r1 :: State s a = State (s -> (a, s)) - это вычисление с состоянием
    -- p :: a -> State s b = a -> State (s -> (b, s)) - это вычисление 
    -- с состоянием, зависящее от параметра, вычисляемого r1.
    (State r1) >>= p = State passState
        where passState s = (res2, finalState)
                      -- Запускаем первое вычисление, получаем параметр
                where (res1, intermediateState) = r1 s          
                      -- Вычисляем по параметру второе вычисление
                      (State r2) = p res1                       
                      -- Запускаем второе вычисление
                      (res2, finalState) = r2 intermediateState


мне понятнее чем отсюда
Автор(ы): Пол Хьюдак, Джон Петерсон, Джозеф Фасел
Дата: 24.04.2007
Данный материал – продолжение начатого в прошлом номере введения в программирование на Haskell для имеющих опыт программирования, по крайней мере, на одном языке, желательно функциональном (даже если это «почти функциональный» язык, такой как ML или Scheme).


data SM a = SM (S -> (a,S)) -- Монадический тип

instance Monad SM where
   -- определяет распространение состояния
   SM c1 >>= fc2        = SM (\s0 -> let (r,s1) = c1 s0
                                         SM c2 = fc2 r in
                                        c2 s1)
   return k             = SM (\s -> (k,s))



Что знают другие чего не знаю я?
Re: Именования в функциональных языках
От: Кодёнок  
Дата: 15.06.09 14:47
Оценка:
Здравствуйте, achmed, Вы писали:

A>Что знают другие чего не знаю я?


Математику — это в основном общепринятые обозначения оттуда.
Re: Именования в функциональных языках
От: thesz Россия http://thesz.livejournal.com
Дата: 15.06.09 15:05
Оценка:
A>Почему программируя на функциональных языках люди дают имена переменным из одной буквы?

Вот кусок реального кода:
printBy4 (a:b:c:d:xs) = hexChar [a,b,c,d]++printBy4 xs
printBy4 _ = ""


И как ты предлагаешь назвать a, b, c и d?

Там, где логика посложней, там у меня и названия понормальней.

State monad не такая уж и сложная вещь после того, как разберёшься.

A>Символ " ' " часто используют, это производное значение?


Это чуть лучше, чем вездесущий 1.

A>Что знают другие чего не знаю я?


Имеют привычку.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re: Именования в функциональных языках
От: MasterZiv СССР  
Дата: 15.06.09 15:37
Оценка:
achmed wrote:
> Почему программируя на функциональных языках люди дают имена переменным
> из одной буквы?

> Что знают другие чего не знаю я?


Видимо, то, что на функциональных языках программы компактные,
и там НЕ НУЖНО давать "говорящее" имя переменной, потому что
весь текст программной единицы виден перед глазами, где переменная
"объявляется", и где используется.

Например, в лямбдах -- маленьких встроенных фукнциях, определяемых
по месту использования, бессмысленно давать параметрам какие-то
сложные имена -- весь код в одной строке перед глазами.

(lambda (x y) (max x y))
Posted via RSDN NNTP Server 2.1 beta
Re: Именования в функциональных языках
От: deniok Россия  
Дата: 15.06.09 16:18
Оценка:
Здравствуйте, achmed, Вы писали:

A>Например код монады Stateотсюда
Автор(ы): Евгений Кирпичев aka jkff
Дата: 28.12.2008
Статья рассказывает о том, что такое монады Haskell, приводятся примеры, иллюстрирующие эту концепцию.

A>мне понятнее чем отсюда
Автор(ы): Пол Хьюдак, Джон Петерсон, Джозеф Фасел
Дата: 24.04.2007
Данный материал – продолжение начатого в прошлом номере введения в программирование на Haskell для имеющих опыт программирования, по крайней мере, на одном языке, желательно функциональном (даже если это «почти функциональный» язык, такой как ML или Scheme).

A>Что знают другие чего не знаю я?

Код Жени максимально широко откомментирован и преследует цели обучения, а код из GIH взят из статьи Вадлера, в которой эта монада собственно и была впервые придумана. Для сравнения: в современной версии GHC этот код выглядит так
instance Monad (State s) where 
 return a = State $ \s -> (a, s) 
 m >>= k  = State $ \s -> let 
              (a, s') = runState m s 
              in runState (k a) s'
Re: Именования в функциональных языках
От: VoidEx  
Дата: 15.06.09 16:38
Оценка:
Здравствуйте, achmed, Вы писали:

A>Добрый день!


A>Почему программируя на функциональных языках люди дают имена переменным из одной буквы?


A>Символ " ' " часто используют, это производное значение?


' используют, потому что можно. Для сравнения, в других языках можно было бы заиспользовать локальную name_ внутри функции name.
Односимвольные переменные, потому что зачастую функция занимает 2-3 строки, зачем там давать имя headOfSomeList, если место введения этой переменной всегда перед глазами? Говорящее название нужно, когда три экрана прокрутил, и вот перед глазами переменная, а фиг поймешь, к чему она относится.
А если у вас вводится (h:t), то и так ясно, что это голова и хвост соответствующего параметра.
Re: Именования в функциональных языках
От: MigMit Россия http://migmit.vox.com
Дата: 15.06.09 17:08
Оценка:
Я честно пытался прочитать первый из этих примеров. И не смог. Оказалось, что промежуточных, никому не нужных переменных такое количество, что я вынужден постоянно держать в голове цепочку "так, эта переменная получается из этой, а та из вот этой..." Функция начинает напоминать речь Горбачёва, который и сам к концу фразы забывал, с чего она началась.

А "штрих" используется как его используют все математики — для обозначения значения, которое почти такое же в каком-то смысле, но не совсем.
Re[2]: Именования в функциональных языках
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 15.06.09 18:05
Оценка:
Здравствуйте, Кодёнок, Вы писали:

Кё>Здравствуйте, achmed, Вы писали:


A>>Что знают другие чего не знаю я?


Кё>Математику — это в основном общепринятые обозначения оттуда.


Угу, что означают буквы c, k?
Re[2]: Именования в функциональных языках
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 15.06.09 18:08
Оценка:
Здравствуйте, thesz, Вы писали:

A>>Почему программируя на функциональных языках люди дают имена переменным из одной буквы?


T>Вот кусок реального кода:

T>
T>printBy4 (a:b:c:d:xs) = hexChar [a,b,c,d]++printBy4 xs
T>printBy4 _ = ""
T>


T>И как ты предлагаешь назвать a, b, c и d?


Нуу, можно x1:x2:x3:x4:xs или так не принято?

T>Там, где логика посложней, там у меня и названия понормальней.


T>State monad не такая уж и сложная вещь после того, как разберёшься.

Ага, но разбираться все таки проще с длинными именами было.
Re[2]: Именования в функциональных языках
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 15.06.09 18:13
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>achmed wrote:

>> Почему программируя на функциональных языках люди дают имена переменным
>> из одной буквы?

>> Что знают другие чего не знаю я?


MZ>Видимо, то, что на функциональных языках программы компактные,

MZ>и там НЕ НУЖНО давать "говорящее" имя переменной, потому что
MZ>весь текст программной единицы виден перед глазами, где переменная
MZ>"объявляется", и где используется.

И в сигнатурах функций имен параметров тоже нет.
Вот яркий пример
callCC :: ((a -> m b) -> m a) -> m a



MZ>Например, в лямбдах -- маленьких встроенных фукнциях, определяемых

MZ>по месту использования, бессмысленно давать параметрам какие-то
MZ>сложные имена -- весь код в одной строке перед глазами.

MZ>(lambda (x y) (max x y))

Пожалуй да, длинные имена в данном случае не уместны,
но буквы то все равно выбираются осознано . Вряд ли бы Вынаписали так:

(lambda (a r) (max a r))
Re[2]: Именования в функциональных языках
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 15.06.09 18:19
Оценка:
Здравствуйте, deniok, Вы писали:

D>Код Жени максимально широко откомментирован и преследует цели обучения, а код из GIH взят из статьи Вадлера, в которой эта монада собственно и была впервые придумана. Для сравнения: в современной версии GHC этот код выглядит так


Это интересно

D>
D>instance Monad (State s) where 
D> return a = State $ \s -> (a, s) 
D> m >>= k  = State $ \s -> let 
D>              (a, s') = runState m s 
D>              in runState (k a) s'
D>


Непонятно, почему здесь используется k, а не f, например?
Re[2]: Именования в функциональных языках
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 15.06.09 18:28
Оценка:
Здравствуйте, VoidEx, Вы писали:

VE>Здравствуйте, achmed, Вы писали:


A>>Добрый день!


A>>Почему программируя на функциональных языках люди дают имена переменным из одной буквы?


A>>Символ " ' " часто используют, это производное значение?


VE>' используют, потому что можно. Для сравнения, в других языках можно было бы заиспользовать локальную name_ внутри функции name.


Но ведь подчеркивание тоже можно, почему его не используют?

VE>Односимвольные переменные, потому что зачастую функция занимает 2-3 строки, зачем там давать имя headOfSomeList, если место введения этой переменной всегда перед глазами? Говорящее название нужно, когда три экрана прокрутил, и вот перед глазами переменная, а фиг поймешь, к чему она относится.

VE>А если у вас вводится (h:t), то и так ясно, что это голова и хвост соответствующего параметра.

Это выражение конечно же понятно, еще такое именование часто встречаентся(x:xs), почему не пишут одинаково везде?
Re[3]: Именования в функциональных языках
От: deniok Россия  
Дата: 15.06.09 19:01
Оценка: 9 (2) :)
Здравствуйте, achmed, Вы писали:


A>Это интересно


D>>
D>>instance Monad (State s) where 
D>> return a = State $ \s -> (a, s) 
D>> m >>= k  = State $ \s -> let 
D>>              (a, s') = runState m s 
D>>              in runState (k a) s'
D>>


A>Непонятно, почему здесь используется k, а не f, например?


Опасные вопросы задаёшь
Потому, что это k не произвольная функция, а штука с типом k :: a -> m b; каждому пижону известно, что это называется стрелка Клейсли:
newtype Kleisli m a b = Kleisli {
   runKleisli :: a -> m b
}
Re[3]: Именования в функциональных языках
От: MigMit Россия http://migmit.vox.com
Дата: 15.06.09 19:08
Оценка:
Здравствуйте, achmed, Вы писали:

A>Угу, что означают буквы c, k?


Значение, которое через три-четыре строчки можно будет забыть.
Re[3]: Именования в функциональных языках
От: MigMit Россия http://migmit.vox.com
Дата: 15.06.09 19:10
Оценка:
Здравствуйте, achmed, Вы писали:

T>>И как ты предлагаешь назвать a, b, c и d?


A>Нуу, можно x1:x2:x3:x4:xs или так не принято?


Можно. И делают. Чего никто не делает, так это не даёт им имена типа "длинныйМнемоническийИдентификатор1"

A>Ага, но разбираться все таки проще с длинными именами было.


Нет, сложнее.
Re[3]: Именования в функциональных языках
От: MigMit Россия http://migmit.vox.com
Дата: 15.06.09 19:11
Оценка:
Здравствуйте, achmed, Вы писали:

A>Пожалуй да, длинные имена в данном случае не уместны,

A>но буквы то все равно выбираются осознано . Вряд ли бы Вынаписали так:

A>
(lambda (a r) (max a r))


Зависит от. Иногда и пишут, например:

instance Functor ((,) x) where fmap f (a, r) = (a, f r)
Re[3]: Именования в функциональных языках
От: MigMit Россия http://migmit.vox.com
Дата: 15.06.09 19:13
Оценка:
Здравствуйте, achmed, Вы писали:

A>Но ведь подчеркивание тоже можно, почему его не используют?


Непонятно. А если бы использовали подчёркивание, ты бы спросил "почему не штрих"?

A>Это выражение конечно же понятно, еще такое именование часто встречаентся(x:xs), почему не пишут одинаково везде?


Ну, наверное, потому что все люди разные. И писать одинаково не могут. Что к лучшему.
Re[4]: Именования в функциональных языках
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 15.06.09 19:19
Оценка:
Здравствуйте, MigMit, Вы писали:

MM>Здравствуйте, achmed, Вы писали:


A>>Пожалуй да, длинные имена в данном случае не уместны,

A>>но буквы то все равно выбираются осознано . Вряд ли бы Вынаписали так:

A>>
(lambda (a r) (max a r))


MM>Зависит от. Иногда и пишут, например:


MM>
instance Functor ((,) x) where fmap f (a, r) = (a, f r)


конечно зависит, это я и хотел сказать
Re[4]: Именования в функциональных языках
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 15.06.09 19:20
Оценка:
Здравствуйте, MigMit, Вы писали:

A>>Ага, но разбираться все таки проще с длинными именами было.


MM>Нет, сложнее.


Кому как.
Re[3]: Именования в функциональных языках
От: VoidEx  
Дата: 15.06.09 19:25
Оценка:
Здравствуйте, achmed, Вы писали:

A>И в сигнатурах функций имен параметров тоже нет.

A>Вот яркий пример
A>
A>callCC :: ((a -> m b) -> m a) -> m a 
A>


А как вы предлагаете называть произвольный тип и монаду?
sourceType, targetType и anyMonad?
Re[4]: Именования в функциональных языках
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 15.06.09 19:26
Оценка:
Здравствуйте, deniok, Вы писали:

D>Опасные вопросы задаёшь

D>Потому, что это k не произвольная функция, а штука с типом k :: a -> m b; каждому пижону известно, что это называется стрелка Клейсли:

Гугл показывает ресурсы с упоминанием теории категорий, видимо это и есть опасность

Интересно.
Re[4]: Именования в функциональных языках
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 15.06.09 19:39
Оценка:
Здравствуйте, VoidEx, Вы писали:

VE>Здравствуйте, achmed, Вы писали:параметры стало понятно


A>>И в сигнатурах функций имен параметров тоже нет.

A>>Вот яркий пример
A>>
A>>callCC :: ((a -> m b) -> m a) -> m a 
A>>


VE>А как вы предлагаете называть произвольный тип и монаду?

VE>sourceType, targetType и anyMonad?

Имелись в виду не названия типов параметров, и не названия переменных типов параметров,
а имена параметров функций, которые можно увидеть только в определении функции.

Для чего служат эти параметры становится понятно после прочтения комментариев Cont, но определения этой функции нет в исходниках.
Re[5]: Именования в функциональных языках
От: Курилка Россия http://kirya.narod.ru/
Дата: 15.06.09 19:50
Оценка:
Здравствуйте, achmed, Вы писали:

A>Имелись в виду не названия типов параметров, и не названия переменных типов параметров,

A>а имена параметров функций, которые можно увидеть только в определении функции.

По-моему если для хаскельной функции тебе необходимы имена параметров, то или у тебя неправильная декомпозиция на функции или она обозвана некорректно. В идеале должно быть достаточно имени и типов. А для некоторых — всего лишь типа.

A>Для чего служат эти параметры становится понятно после прочтения комментариев Cont, но определения этой функции нет в исходниках.


Т.е. ты жалуешься на то, что в типе сигнатуре не объясняется что такое продолжения и монады?
Re[3]: Именования в функциональных языках
От: thesz Россия http://thesz.livejournal.com
Дата: 15.06.09 19:55
Оценка:
T>>Вот кусок реального кода:
T>>
T>>printBy4 (a:b:c:d:xs) = hexChar [a,b,c,d]++printBy4 xs
T>>printBy4 _ = ""
T>>


T>>И как ты предлагаешь назвать a, b, c и d?

A>Нуу, можно x1:x2:x3:x4:xs или так не принято?

И в чём будет глубокий смысл, пардоньте? Ведь можно же и так: (highestBit:lowestBitFromTwoHghest:highestBitFromLowerPair:lowestBitOfTheNibble:xs. Так ведь ещё понятней будет.

T>>State monad не такая уж и сложная вещь после того, как разберёшься.

A>Ага, но разбираться все таки проще с длинными именами было.

Возьми, да перепиши по своему. Это поспособствует пониманию. Я вполне серььёзно говорю, ведь тебе придётся выразить краткую запись во многих словах, таким образом, понять смысл и выразить по своему.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[4]: Именования в функциональных языках
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 15.06.09 20:02
Оценка:
Здравствуйте, thesz, Вы писали:

A>>Ага, но разбираться все таки проще с длинными именами было.


T>Возьми, да перепиши по своему. Это поспособствует пониманию. Я вполне серььёзно говорю, ведь тебе придётся выразить краткую запись во многих словах, таким образом, понять смысл и выразить по своему.


Переписал уже, причем только одна переменная с длинным именем получилась.

Я ожидал что есть какой то гайд, где расписаны рекомендации и мотивации к именованию переменных.
Re[5]: Именования в функциональных языках
От: VoidEx  
Дата: 15.06.09 20:11
Оценка:
Здравствуйте, achmed, Вы писали:

A>Имелись в виду не названия типов параметров, и не названия переменных типов параметров,

A>а имена параметров функций, которые можно увидеть только в определении функции.

С этим согласен, отсутствие имён в декларации иногда напрягает.
Заводить же
type NameOfFoo = String
type TypeOfFoo = String
type FooID = Int
foo :: NameOfFoo -> TypeOfFoo -> [FooID]

лишь для того, чтобы указать имя, как-то напряжно
Я бы предпочёл иметь возможность написать
foo :: (fooName :: String) -> (fooType :: String) -> (fooIDs :: [Int])
Re[6]: Именования в функциональных языках
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 15.06.09 20:19
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Здравствуйте, achmed, Вы писали:


A>>Имелись в виду не названия типов параметров, и не названия переменных типов параметров,

A>>а имена параметров функций, которые можно увидеть только в определении функции.

К>По-моему если для хаскельной функции тебе необходимы имена параметров, то или у тебя неправильная декомпозиция на функции или она обозвана некорректно. В идеале должно быть достаточно имени и типов.


Что такое CPS имел представление, о монадах кое какое представление имел. Как CPS использовать с монадами стало понятно только после прочтения комментариев.

К>А для некоторых — всего лишь типа.


Если бы этот прувер еще по названию мог функцию с нужным кодом строить

A>>Для чего служат эти параметры становится понятно после прочтения комментариев Cont, но определения этой функции нет в исходниках.


К>Т.е. ты жалуешься на то, что в типе сигнатуре не объясняется что такое продолжения и монады?


Видимо это привычка после мейнстримовых языков: где у каждого параметра есть имя, которое является самодокументируемым.
Хотя не совсем понятно какие были бы имена для callCC.
Re[7]: Именования в функциональных языках
От: Курилка Россия http://kirya.narod.ru/
Дата: 15.06.09 20:30
Оценка: +1
Здравствуйте, achmed, Вы писали:

A>Видимо это привычка после мейнстримовых языков: где у каждого параметра есть имя, которое является самодокументируемым.

A>Хотя не совсем понятно какие были бы имена для callCC.

Наверное, тут и "порылась собака": хаскель способствует повышению абстракции до "жёстких" вещей из ТК, где уже сам тип функции является довольно описательной частью, а параметры до такой степени абстрактны, что именование их большой помощью читателю кода не является.
Но, с другой стороны, не только же из функторов и прочих моноидов состоят программы, поэтому в коде, более близком к прикладным вопросам решения задачи (если она сама по себе не из области аля ТК), имена параметров, скорее всего, имели бы смысл.
Re[6]: Именования в функциональных языках
От: deniok Россия  
Дата: 15.06.09 20:47
Оценка:
Здравствуйте, VoidEx, Вы писали:

VE>Я бы предпочёл иметь возможность написать

VE>
VE>foo :: (fooName :: String) -> (fooType :: String) -> (fooIDs :: [Int])
VE>


Ну так и напиши
foo :: {- fooName :: -} String -> {- fooType :: -} String -> {- fooIDs :: -} [Int]

Re[3]: Именования в функциональных языках
От: MasterZiv СССР  
Дата: 15.06.09 20:51
Оценка: :)
achmed wrote:

> MZ>(lambda (x y) (max x y))

> Пожалуй да, длинные имена в данном случае не уместны,
> но буквы то все равно выбираются осознано . Вряд ли бы Вынаписали так:
>
> (lambda (a r) (max a r))

Да брось ты. Тут имена переменных могут быть вообще любыми.
Я часто ловлю себя на мысли (ну или ситуации), что слишком
долго думаю о имени переменной, и в итоге набираю
что-то типа

asdf

или для нескольких переменных

a s d f
Posted via RSDN NNTP Server 2.1 beta
Re[7]: Именования в функциональных языках
От: VoidEx  
Дата: 15.06.09 21:07
Оценка:
Здравствуйте, deniok, Вы писали:

D>Ну так и напиши

D>
D>foo :: {- fooName :: -} String -> {- fooType :: -} String -> {- fooIDs :: -} [Int]
D>

D>
Хаддок это поймет? В таком случае я пишу
foo ::
     String -- ^ name
  -> String -- ^ type
  -> [Int]  -- ^ IDs

Но в однострочном варианте при небольших камментах было бы лучше
Re[8]: Именования в функциональных языках
От: deniok Россия  
Дата: 15.06.09 21:09
Оценка:
Здравствуйте, VoidEx, Вы писали:

VE>Хаддок это поймет?


Черт его знает
Re[5]: Именования в функциональных языках
От: thesz Россия http://thesz.livejournal.com
Дата: 16.06.09 06:39
Оценка: :))) :)
A>>>Ага, но разбираться все таки проще с длинными именами было.
T>>Возьми, да перепиши по своему. Это поспособствует пониманию. Я вполне серььёзно говорю, ведь тебе придётся выразить краткую запись во многих словах, таким образом, понять смысл и выразить по своему.

A>Переписал уже, причем только одна переменная с длинным именем получилась.


A>Я ожидал что есть какой то гайд, где расписаны рекомендации и мотивации к именованию переменных.


Да-да. Специальный такой.

Если написать по нему шесть комбинаторов из шести монад, а потом прочитать, как слово без пробелов, то ты узнаешь имя Бога.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[3]: Именования в функциональных языках
От: z00n  
Дата: 16.06.09 07:45
Оценка: +1
Здравствуйте, achmed, Вы писали:

A>Угу, что означают буквы c, k?


Буквой К,k а иногда C,c часто обозначают continuation — функцию, которой передают результат вычисления. "K" в начале, это , я так понимаю из немецкого.
Re[3]: Именования в функциональных языках
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 16.06.09 09:41
Оценка: :)))
Здравствуйте, achmed, Вы писали:

A>Но ведь подчеркивание тоже можно, почему его не используют?


Потому что rock'n'roll круче, чем rock_n_roll.
Re: Именования в функциональных языках
От: BulatZiganshin  
Дата: 16.06.09 10:42
Оценка:
Здравствуйте, achmed, Вы писали:

A>Почему программируя на функциональных языках люди дают имена переменным из одной буквы?

A>Символ " ' " часто используют, это производное значение?

потому что при коротком определении в 2-3 строчки этого вполне достаточно. твой же "расширенный" пример более понятен не из-за имён переменных, а из-за комментариев. попробуй без них..
Люди, я люблю вас! Будьте бдительны!!!
Re[4]: Именования в функциональных языках
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 16.06.09 10:42
Оценка:
Здравствуйте, lomeo, Вы писали:

L>Здравствуйте, achmed, Вы писали:


A>>Но ведь подчеркивание тоже можно, почему его не используют?


L>Потому что rock'n'roll круче, чем rock_n_roll.


Подозреваю, что одна из причин это ширина символа.
Re[5]: Именования в функциональных языках
От: MigMit Россия http://migmit.vox.com
Дата: 16.06.09 10:45
Оценка: 1 (1) +1
Здравствуйте, achmed, Вы писали:

A>Подозреваю, что одна из причин это ширина символа.


У тебя в редакторе не моноширинный шрифт?
Re[6]: Именования в функциональных языках
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 16.06.09 12:20
Оценка:
Здравствуйте, MigMit, Вы писали:

MM>Здравствуйте, achmed, Вы писали:


A>>Подозреваю, что одна из причин это ширина символа.


MM>У тебя в редакторе не моноширинный шрифт?


В редакторе да, но на страницах форма нет
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.