Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Религиозные войны > как вы понимаете эту строку


Автор: 502 2.9.2011, 09:26
П.С. оба варианта есть в разных ЯП

Автор: Данкинг 2.9.2011, 09:36
"num присваивается результат сравнения a и b" логичней.

Автор: UniBomb 2.9.2011, 09:50
Цитата(Данкинг @  2.9.2011,  10:36 Найти цитируемый пост)
логичней

Что логичного в том, что оператор присваивания и оператор сравнения имеют одинаковый вид?

Автор: 502 2.9.2011, 10:10
Цитата(UniBomb @  2.9.2011,  09:50 Найти цитируемый пост)
Что логичного в том, что оператор присваивания и оператор сравнения имеют одинаковый вид? 

в ЯП где это "num присваивается результат сравнения a и b",
я так понимаю это как-бы не один и тот же оператор, первый это 'let =' а второй это '='

вот пример на F#
http://ideone.com/sHCDB
Цитата

let a = 4
let b = 2
let num = a = b
 
printf "%b" num


output:
false



но я тоже за второй вариант smile 

Автор: A5uKa 2.9.2011, 10:16
num присваивается результат сравнения a и b

Код

num <- a = b  // (без let)

Автор: kemiisto 2.9.2011, 10:30
Цитата(502 @  2.9.2011,  09:10 Найти цитируемый пост)
я так понимаю это как-бы не один и тот же оператор, первый это 'let =' а второй это '='

Только let binding - выражение, а не оператор. С операторами в ФП туговато. smile 

Цитата(502 @  2.9.2011,  09:10 Найти цитируемый пост)
вот пример на F#

У функциональных языков (и особенно смешанных) синтаксис ублюдочный. Мы в курсе. smile 

A5uKa, вот без let понятнее. Но, уж коли начали... Вот в упор не понимаю одной вещи. Почему нельзя использовать юникодный символ стрелочки? И той же лямбды там. Было бы куда нагляднее. Уже почти повсеместно перешли на UTF-8 и т.п. кодировки для хранения исходников, а всей пользы не извлекаем.

Автор: 502 2.9.2011, 10:37
Цитата(kemiisto @  2.9.2011,  10:30 Найти цитируемый пост)
И той же лямбды там.

в Racket вроде http://forum.vingrad.ru/index.php?showtopic=335134&view=findpost&p=2384267
Цитата(kemiisto @  2.9.2011,  10:30 Найти цитируемый пост)
Было бы куда нагляднее.

а как набирать?

Добавлено через 5 минут и 45 секунд
kemiisto, только эти символы, или ты хочешь как в http://en.wikipedia.org/wiki/APL_%28programming_language%29?

Автор: A5uKa 2.9.2011, 10:52
Цитата(kemiisto @ 2.9.2011,  10:30)
A5uKa, вот без let понятнее. Но, уж коли начали... Вот в упор не понимаю одной вещи. Почему нельзя использовать юникодный символ стрелочки? И той же лямбды там. Было бы куда нагляднее. Уже почти повсеместно перешли на UTF-8 и т.п. кодировки для хранения исходников, а всей пользы не извлекаем.

В Haskell есть http://hackage.haskell.org/trac/haskell-prime/wiki/UnicodeInHaskellSource

Но набирать действительно неудобно  smile 

Автор: kemiisto 2.9.2011, 11:44
Цитата(502 @  2.9.2011,  09:37 Найти цитируемый пост)
kemiisto, только эти символы, или ты хочешь как в APL?

Я похож на идиота!? smile

Цитата(502 @  2.9.2011,  09:37 Найти цитируемый пост)
в Racket вроде так

Фу! Это лисп какой-то. Нинужен!

Автор: A5uKa 2.9.2011, 12:50
Компилятор F# очень сырой  smile 

Он не может разобрать даже самые простые конструкции
Код

let rec a x a =
    let mutable x = 
        fun a -> if x = () then a = false else a = true
    if  x    ( x  <| true ) then 
        x <- fun a -> a = true = a = false
        x <| (   a <| fun x -> ()   )
    else false

Автор: LSD 2.9.2011, 13:39
Варианты ответа должны быть: 
- правильно
- неправильно
 smile 

Автор: A5uKa 2.9.2011, 13:43
Цитата(LSD @ 2.9.2011,  13:39)
Варианты ответа должны быть: 
- правильно
- неправильно
 smile

Да, и какой тогда вывод у a() ?  smile 

Автор: Данкинг 2.9.2011, 15:30
Цитата(UniBomb @  2.9.2011,  10:50 Найти цитируемый пост)
оператор присваивания 

После ключевого слова LET я никакого иного символа кроме "равно" не представляю.

Автор: A5uKa 2.9.2011, 16:30
=:= хороший оператор сравнения  smile 

Автор: 502 2.9.2011, 16:46
Цитата(A5uKa @  2.9.2011,  16:30 Найти цитируемый пост)
=:= хороший оператор сравнения

имхо ничем не лучше ==


kemiisto, а lambda как в Haskell что тоже не нравится?
Код

let sum = \(x, y) -> x + y

Автор: kemiisto 2.9.2011, 17:45
Цитата(502 @  2.9.2011,  15:46 Найти цитируемый пост)
kemiisto, а lambda как в Haskell что тоже не нравится?

Я ФПшный синтаксиси вообще с трудом перевариваю. В любом случае, было бы намного лучше с настоящей греческой буквой.

Автор: k0rvin 3.9.2011, 22:16
как ошибку синтаксиса

Код

GHCi, version 6.12.3: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> let a = 1; b = 2
Prelude> let num = a = b

<interactive>:1:12: parse error on input `='

Автор: 502 3.9.2011, 22:49
Цитата(k0rvin @  3.9.2011,  22:16 Найти цитируемый пост)
как ошибку синтаксиса

ну, мы же не говорим про конкретный ЯП smile 

где-то это ошибка, а где-то это вполне коректно
http://ru.wikipedia.org/wiki/Присваивание
Цитата

Использованием этого же символа, значение определяется в зависимости от контекста.
Например, в выражении языка ПЛ/1:
А = В = С  
переменной А присваивается булевское значение выражения отношения В = С

Автор: k0rvin 3.9.2011, 22:56
Цитата(502 @ 3.9.2011,  22:49)
ну, мы же не говорим про конкретный ЯП smile 

вот именно, поэтому я это выражение воспринимаю как ошибку синтаксиса, независимо от языка, и языки, в которых это корректное выражение, мне не нравятся =)

Автор: 502 3.9.2011, 23:00
Цитата(k0rvin @  3.9.2011,  22:56 Найти цитируемый пост)
вот именно, поэтому я это выражение воспринимаю как ошибку синтаксиса, независимо от языка, и языки, в которых это корректное выражение, мне не нравятся =) 

хорошо, но как тогда написать например если надо 2,3,4 переменным присвоить одно и тоже значение

Автор: k0rvin 4.9.2011, 07:21
Цитата(502 @ 3.9.2011,  23:00)
хорошо, но как тогда написать например если надо 2,3,4 переменным присвоить одно и тоже значение

так не нужно писать

Автор: LSD 5.9.2011, 09:37
Цитата(A5uKa @  2.9.2011,  14:43 Найти цитируемый пост)
Да, и какой тогда вывод у a() ?

а - не функция, так что ошибка компиляции smile 

Автор: A5uKa 5.9.2011, 09:51
Цитата(LSD @ 5.9.2011,  09:37)
Цитата(A5uKa @  2.9.2011,  14:43 Найти цитируемый пост)
Да, и какой тогда вывод у a() ?

а - не функция, так что ошибка компиляции smile

А что же это ?

Автор: LSD 5.9.2011, 10:13
Цитата(A5uKa @  5.9.2011,  10:51 Найти цитируемый пост)
А что же это ? 

Переменная вестимо smile 

Автор: 502 5.9.2011, 10:44
http://en.wikipedia.org/wiki/Equals_sign#Usage
Цитата

In mathematics, the equals sign is used for both assignment (ex: let x = 2) and for testing or denoting equality (ex: if x = 2 then x/2 = 1).


 smile 

Автор: A5uKa 5.9.2011, 12:36
Цитата(LSD @ 5.9.2011,  10:13)
Цитата(A5uKa @  5.9.2011,  10:51 Найти цитируемый пост)
А что же это ? 

Переменная вестимо smile

oO что-то совсем не вестимо 

Автор: LSD 5.9.2011, 12:51
Цитата(A5uKa @  5.9.2011,  13:36 Найти цитируемый пост)
oO что-то совсем не вестимо  

Это потому, что ты понимаешь неправильно smile 

Автор: A5uKa 5.9.2011, 14:38
Цитата(LSD @ 5.9.2011,  12:51)
Цитата(A5uKa @  5.9.2011,  13:36 Найти цитируемый пост)
oO что-то совсем не вестимо  

Это потому, что ты понимаешь неправильно smile

Расскажи как ты понимаешь  smile 

Автор: LSD 5.9.2011, 14:51
Цитата(A5uKa @  5.9.2011,  15:38 Найти цитируемый пост)
Расскажи как ты понимаешь

Я понимаю - правильно smile 

Автор: kemiisto 5.9.2011, 15:10
Код
let LSD = troll = fat troll

Автор: k0rvin 5.9.2011, 17:44
Цитата(502 @ 5.9.2011,  10:44)
http://en.wikipedia.org/wiki/Equals_sign#Usage
Цитата

In mathematics, the equals sign is used for both assignment (ex: let x = 2) and for testing or denoting equality (ex: if x = 2 then x/2 = 1).


 smile

mathematics != http://en.wikipedia.org/wiki/Equals_sign#In_computer_programming

Автор: A5uKa 6.9.2011, 07:10
Цитата(kemiisto @ 5.9.2011,  15:10)
Код
let LSD = troll = fat troll

true

Автор: LSD 6.9.2011, 09:22
Цитата(A5uKa @ 6.9.2011,  08:10)
Цитата(kemiisto @ 5.9.2011,  15:10)
Код
let LSD = troll = fat troll

true

#define true false
 smile 

Автор: kemiisto 6.9.2011, 10:12
LSD, case-sensitive же! smile 

Автор: LSD 6.9.2011, 10:50
Цитата(kemiisto @  6.9.2011,  11:12 Найти цитируемый пост)
LSD, case-sensitive же!

А что не так? smile 

Автор: kemiisto 6.9.2011, 11:30
LSD,  smile 

Автор: A5uKa 6.9.2011, 11:42
Цитата(LSD @ 6.9.2011,  09:22)
Цитата(A5uKa @ 6.9.2011,  08:10)
Цитата(kemiisto @ 5.9.2011,  15:10)
Код
let LSD = troll = fat troll

true

#define true false
 smile

1 lsd = troll = fat troll      : rule
2 troll = fat troll              : rule
3 true                             : 1 2
4 true = false                  : rule
5 false                            : 1 4
6 lsd = true                     : 2 3
7 lsd = false                    : 6 5
8 troll = fat troll = false    : 1 7
9 lsd = false = true          : 2 8
10 lsd = troll = fat troll = troll = fat troll : 9 2 8

Автор: 502 2.10.2011, 18:01
Цитата(k0rvin @  3.9.2011,  22:56 Найти цитируемый пост)
вот именно, поэтому я это выражение воспринимаю как ошибку синтаксиса, независимо от языка, и языки, в которых это корректное выражение, мне не нравятся =) 

хорошо, но как тогда написать
Цитата(502 @  2.9.2011,  09:26 Найти цитируемый пост)
num присваивается результат сравнения a и b


Автор: gcc 2.10.2011, 19:29
Тихо, я говорю!

num и a  приравниваются и приравнивают значение с b

Б.Н. Ельцин 

user posted image

Автор: bems 14.10.2011, 03:09
Цитата(502 @  2.10.2011,  18:01 Найти цитируемый пост)
хорошо, но как тогда написать num присваивается результат сравнения a и b
это же очевидно
num := a = b

Автор: Akella 14.10.2011, 07:37
Цитата(Данкинг @ 2.9.2011,  09:36)
"num присваивается результат сравнения a и b" логичней.

Да, в дельфи так и есть. Только  num должга быть белевого типа. num := a=b

Автор: k0rvin 14.10.2011, 22:55
Цитата(bems @ 14.10.2011,  03:09)
это же очевидно
num := a = b

или num = a == b

Автор: 502 7.12.2011, 13:12
http://en.wikipedia.org/wiki/List_of_mathematical_symbols#Symbols

Цитата

=   |   equality   |   x = y means x and y represent the same thing or value.

...

:=  |   definition |   x := y, y =: x or x ≡ y means x is defined to be another name for y


 smile 

Автор: 502 7.12.2011, 15:14
в visual basic тоже num присваивается результат сравнения a и b
Код

Dim isAnswer As Boolean = num = 42

Автор: Paulc 7.12.2011, 19:34
num присваивается результат сравнения a и b

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)