Size: a a a

2020 May 02

G

Gymmasssorla in rust_offtopic
Soul
отсутствие случая в истории когда систему или браузер написали на хорошокоде
Тут в твоей логике пробоина: отсутствие чего-либо не доказывает его невозможность
источник

S

Soul in rust_offtopic
а теоретическая возможность и реальность - это разные вещи
источник

p

polunin.ai in rust_offtopic
Soul
отсутствие случая в истории когда систему или браузер написали на хорошокоде
когда-то в 500 г. до н.э:
- Земля круглая! Вот смотри я доказал.
- Нет не круглая.
- Почему?
- Не было еще в истории случая чтобы доказали что земля круглая.
источник

S

Soul in rust_offtopic
и  критикой PR люди требуют от реального кода теоретически возможных свойств
источник

EG

Emmanuel Goldstein in rust_offtopic
Gymmasssorla
А вообще какую задачу решаешь?
Есть список аргументов. Из него нужно несколько раз сделать следующее:
1. Попнуть первый элемент
2. Вернуть ошибку, если его нет
3. (опционально) проверить kind и вытащить из него внутреннее значение. Вернуть ошибку, если kind неправильный.
4. Положить в переменную.
После того, как все аргументы обработаны, либо:
1. Оставить остаток как есть
либо
2. Проверить, что он пустой, вернуть ошибку, если нет
в зависимости от конкретного применения
источник

G

Gymmasssorla in rust_offtopic
Soul
а теоретическая возможность и реальность - это разные вещи
Ну т.е. ты мне пытался доказать совершенно другое
источник

G

Gymmasssorla in rust_offtopic
Ладно, что я своё время трачу впустую
источник

S

Soul in rust_offtopic
я не пытаюсь ничего доказать, я критикую критику, возможно даже аргументированно.
источник

p

polunin.ai in rust_offtopic
Emmanuel Goldstein
Есть список аргументов. Из него нужно несколько раз сделать следующее:
1. Попнуть первый элемент
2. Вернуть ошибку, если его нет
3. (опционально) проверить kind и вытащить из него внутреннее значение. Вернуть ошибку, если kind неправильный.
4. Положить в переменную.
После того, как все аргументы обработаны, либо:
1. Оставить остаток как есть
либо
2. Проверить, что он пустой, вернуть ошибку, если нет
в зависимости от конкретного применения
это называется парсинг и решается комбинаторными парсерами
источник

p

polunin.ai in rust_offtopic
то есть тебе нужно сделать комбинаторы аля:

let (foo, list) = get_value(list)?;
let (bar, list) = get_inner::<Integer>(list)?;
источник

EG

Emmanuel Goldstein in rust_offtopic
Я посмотрю, сумеет ли nom пережить настолько нестандартный входной тип, но, по-моему, нет.
источник

S

Soul in rust_offtopic
выплескиваю накопления негативных эмоций к критикующим, надо лечиться
источник

EG

Emmanuel Goldstein in rust_offtopic
Пилить свой фреймворк для комбинаторных парсеров не входит в мою задачу.
источник

G

Gymmasssorla in rust_offtopic
Emmanuel Goldstein
Есть список аргументов. Из него нужно несколько раз сделать следующее:
1. Попнуть первый элемент
2. Вернуть ошибку, если его нет
3. (опционально) проверить kind и вытащить из него внутреннее значение. Вернуть ошибку, если kind неправильный.
4. Положить в переменную.
После того, как все аргументы обработаны, либо:
1. Оставить остаток как есть
либо
2. Проверить, что он пустой, вернуть ошибку, если нет
в зависимости от конкретного применения
А, ну тут можно индукцию на гетерогенных списках, думаю. Ну у тебя два варианта: макросы или индукция. Яб индукцию выбрал, т.к. тело макросов трудно разбирать, трудно понять что они вообще делают. Можешь посмотреть пример в demux-stream
источник

EG

Emmanuel Goldstein in rust_offtopic
Gymmasssorla
А, ну тут можно индукцию на гетерогенных списках, думаю. Ну у тебя два варианта: макросы или индукция. Яб индукцию выбрал, т.к. тело макросов трудно разбирать, трудно понять что они вообще делают. Можешь посмотреть пример в demux-stream
Я хочу обойтись без макросов в типах, спасибо.
источник

EG

Emmanuel Goldstein in rust_offtopic
Привет, Hlist!(), привет, Coprod!()
источник

G

Gymmasssorla in rust_offtopic
Emmanuel Goldstein
Я хочу обойтись без макросов в типах, спасибо.
Не за что)
источник

EG

Emmanuel Goldstein in rust_offtopic
Скорее уж действительно посмотрю в сторону nom::sequence::tuple. Там уже написан макрос, генерирующий растовый бойлерплейт.
источник

G

Gymmasssorla in rust_offtopic
Доги, а ты бы индукцию или макросы выбрал?
источник

EG

Emmanuel Goldstein in rust_offtopic
impl List for <все туплы>, который позволяет работать с туплами разной длины
источник