Перейти к публикации
  • Сейчас на странице   Всего пользователей: 1   (0 пользователей, 1 гость)

Rooster

Программирование, т. 8

  

315 пользователей проголосовало

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

Рекомендованные сообщения

 

 

Как это в питоне делается?

примерно так https://repl.it/@SKYnv/bred написать красивее в 4 утра не выходит

 

И когда я в забинденные функции буду передавать аргументы мне редактор скажет какой аргумент какого типа? Я просто конкретно про типизацию говорил, в js(не js) я это могу типизировать так что на вход подаются функции с разными сигнатурами (кроме общего аргумента) и на выходе получаю функции с правильно измененными сигнатурами, автокомплит в редакторе и тп

 

если функции с разными сигнатурами, ты никак не можешь это типизировать по твоему же определению, тк они разные и их нельзя уложить в переменную одного типа

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

 

это даже не относится к частичному применению, ты пытаешься в один список произвольно положить круги и бананы и знать кто из них кто статически?


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение

если функции с разными сигнатурами, ты никак не можешь это типизировать по твоему же определению, тк они разные и их нельзя уложить в переменную одного типа

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

 

Можно  :nate:


Shaman.png.0cdd33d48561cd068bb3c5ee78289381.png Anna.jpeg.03c9b49363298ceec256500a5d522f7d.jpeg Nigga.jpg.f807f2556bdbf68452292a9301494591.jpg

 

Поделиться сообщением


Ссылка на сообщение

нет  :nate:


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение
(изменено)

pepehands

 

flow.repl


Изменено пользователем Rooster

Shaman.png.0cdd33d48561cd068bb3c5ee78289381.png Anna.jpeg.03c9b49363298ceec256500a5d522f7d.jpeg Nigga.jpg.f807f2556bdbf68452292a9301494591.jpg

 

Поделиться сообщением


Ссылка на сообщение

жоска

анонимный объект с динамически типизированой коллекцией и рефлексией

Поделиться сообщением


Ссылка на сообщение

Вот вы флексите


Я не человек, Я - Кантона. (с)

Miraxes#2986

753357.png

Поделиться сообщением


Ссылка на сообщение

короче сначала я немного сломал мозг, но всё оказалось куда проще чем я думал

 

это даже не относится к частичному применению, ты пытаешься в один список произвольно положить круги и бананы и знать кто из них кто статически?

вот только если коллекция константа, пусть и де-факто динамическая, и компилятор умеет отслеживать что в ней и откуда, то почему нет?

по сути это коллекция+анонимный тип в одном

 

эта хуйня работает на движке похожем на темплейты с++ только ещё более продвинутая и ебанутая, дженерики сшарпа такого не умеют делать

 

по сути всё это работает на инферренции типов с учётом контрол флоу, поэтому const на его итоговую переменную binded всё ещё возможен link

 

для начала его коллекция знает что там разные объекты лежат и тракает их тип+позицию т.е. может правильно отослать к источнику (тоесть как анонимка, а не коллекция)

потом она выполняет эту мапу и знает что куда должно пойти и даже какие правильные имена дать всему этому

 

и всё это компайл-тайм офк. в сшарпе подобное можно сделать разве что через жопу dynamic + рефлексию, но это не даст тебе компайл-тайм типобезопасности, только в рантайме вылетит если не то вызовешь

загвоздка в том что мапа это pure функция, поэтому на этапе компиляции имея конст коллекцию оно может выполнить эту мапу зная 100% какой будет её результат, т.к. рантайм не влияет ни на что - коллекция константная, функция чистая

и на выходе получаем анонимку где foo/bar имеют правильные сиги

 

вообще норм вещь, я пока абсолютно не вижу в каких сценариях это применимо кроме как группировать методы автоматически, на самом деле в этом смысле я вообще не поклонник делегатов/лямбд кроме как на коллбеки и чистую функциональщину типа linq

но чето всё-равно внезапно захотелось попробовать котлин, там такой же движок типов/дженериков как и флоу.жс

Поделиться сообщением


Ссылка на сообщение

Много слов непонел, понял только что js дал посасать

JuJeu понравилось это

Shaman.png.0cdd33d48561cd068bb3c5ee78289381.png Anna.jpeg.03c9b49363298ceec256500a5d522f7d.jpeg Nigga.jpg.f807f2556bdbf68452292a9301494591.jpg

 

Поделиться сообщением


Ссылка на сообщение

не жс, а флоу так-то

 

флоу или тайпскрипкт имеют такое же отношение к жсу, как и С++ к С

Поделиться сообщением


Ссылка на сообщение

Все, давай, пока


Shaman.png.0cdd33d48561cd068bb3c5ee78289381.png Anna.jpeg.03c9b49363298ceec256500a5d522f7d.jpeg Nigga.jpg.f807f2556bdbf68452292a9301494591.jpg

 

Поделиться сообщением


Ссылка на сообщение

ну реально, схуяли флоу это жс если я не могу взять твой флоу код и вставить в интерпретатор джаваскрипта?

 

это то же самое что любой жвм язык называть джавой или любой натив язык асемблером

Поделиться сообщением


Ссылка на сообщение

Извини, связь плохая, потом перезвоню


Shaman.png.0cdd33d48561cd068bb3c5ee78289381.png Anna.jpeg.03c9b49363298ceec256500a5d522f7d.jpeg Nigga.jpg.f807f2556bdbf68452292a9301494591.jpg

 

Поделиться сообщением


Ссылка на сообщение

подсел на LUA

Поделиться сообщением


Ссылка на сообщение

отличные сообщения об ошибке в фейсбуке

xQqPaS4.png

JuJeu понравилось это

65881.png

Поделиться сообщением


Ссылка на сообщение
(изменено)

 

 

 

Как это в питоне делается?

примерно так https://repl.it/@SKYnv/bred написать красивее в 4 утра не выходит

 

И когда я в забинденные функции буду передавать аргументы мне редактор скажет какой аргумент какого типа? Я просто конкретно про типизацию говорил, в js(не js) я это могу типизировать так что на вход подаются функции с разными сигнатурами (кроме общего аргумента) и на выходе получаю функции с правильно измененными сигнатурами, автокомплит в редакторе и тп

 

 

это даже не относится к частичному применению, ты пытаешься в один список произвольно положить круги и бананы и знать кто из них кто статически?

 

это возможно, но немного не так как ты думаешь

 

чем кортеж с заданными типами < T1, T2, T3, T4 > отличается от массива из 4х элементов? ответ ничем, каждый кортеж можно представить массивом (но в обычном ООП и в обычных коллекциях/массивах придется потерять информацию о типах каждого вхождения), и любой массив можно представить в виде кортежа

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

юзкейс как это можно заюзать (например если мы в лист положили только бананы и яблоки, но НЕ сливы, мы можем статически провалидировать что функция которая проходится по такому массиву должна быть определена для бананов и яблок, но не обязательно для слив)

 

в общем в скале это можно делать с shapeless - это библиотека которая позволяет удобно со всем этим работать


Изменено пользователем Just.Doit

 

очень крутые котейки

RqvSzvr.png


Кому-то пизды дал - нужно сделать скрин обязательно. (с) Solo

Поделиться сообщением


Ссылка на сообщение

чем кортеж с заданными типами < T1, T2, T3, T4 > отличается от массива из 4х элементов? ответ ничем, каждый кортеж можно представить массивом (но в обычном ООП и в обычных коллекциях/массивах придется потерять информацию о типах каждого вхождения), и любой массив можно представить в виде кортежа

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

вот только это работает исключительно с конст массивами где мы компайл-тайм знаем и размер и объекты. его ход мыслей абсолтно правильный для коллеций которые создаются в рантайме и компилятор не может знать что там лежит

если забрать конст модификатор с funcs в его примере то это больше нихуя не работает т.к. если я к его foo, bar в райнтайме добавлю ещё какую-нибудь функцию то ты не можешь знать будет твоя итоговая анонимка содержать .hui() с нужной сигнатурой или нет

Поделиться сообщением


Ссылка на сообщение

 

 

 

 

Как это в питоне делается?

примерно так https://repl.it/@SKYnv/bred написать красивее в 4 утра не выходит

 

И когда я в забинденные функции буду передавать аргументы мне редактор скажет какой аргумент какого типа? Я просто конкретно про типизацию говорил, в js(не js) я это могу типизировать так что на вход подаются функции с разными сигнатурами (кроме общего аргумента) и на выходе получаю функции с правильно измененными сигнатурами, автокомплит в редакторе и тп

 

 

это даже не относится к частичному применению, ты пытаешься в один список произвольно положить круги и бананы и знать кто из них кто статически?

 

это возможно, но немного не так как ты думаешь

 

чем кортеж с заданными типами отличается от массива из 4х элементов? ответ ничем, каждый кортеж можно представить массивом (но в обычном ООП и в обычных коллекциях/массивах придется потерять информацию о типах каждого вхождения), и любой массив можно представить в виде кортежа

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

юзкейс как это можно заюзать (например если мы в лист положили только бананы и яблоки, но НЕ сливы, мы можем статически провалидировать что функция которая проходится по такому массиву должна быть определена для бананов и яблок, но не обязательно для слив)

 

в общем в скале это можно делать с shapeless - это библиотека которая позволяет удобно со всем этим работать

 

ну так у тебя кортеж с заданными типами

а у него не с заданными

 

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

ведь никто, в том числе автор кода понятия не имеет, что там окажется

может там вообще список методов из конфига/плагина тянутся


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение
(изменено)

угу

но Рустер говорил типа "смотрите так можно в js с помощью флоу сделать, а ваш сисярп так умеет?"


безусловно

но речь идет что "а если мы все таки можем его в компайл тайме зафиксировать, то как мы это можем удобно сделать + чтобы еще могли поверх этого всего гонять какие-то обобщенные функции которые с такими кортэжами работают, причем с кортежами любой длинны"

и он говорит что флоу ползволяет это все делать удобно с помощью самого языка, а не написывая кучу бойлерплейта на обычном ООП


Изменено пользователем Just.Doit

 

очень крутые котейки

RqvSzvr.png


Кому-то пизды дал - нужно сделать скрин обязательно. (с) Solo

Поделиться сообщением


Ссылка на сообщение

Как тоже самое в сисярпе?


Shaman.png.0cdd33d48561cd068bb3c5ee78289381.png Anna.jpeg.03c9b49363298ceec256500a5d522f7d.jpeg Nigga.jpg.f807f2556bdbf68452292a9301494591.jpg

 

Поделиться сообщением


Ссылка на сообщение

Если зафиксировать сигнатуру, то даже без поддержки частичного применения можно просто возвращать лямбду с уменьшенным числом входных параметров на 1, а лямбда будет сама вызывать входную функцию и передавать ей твой параметр.

Если ее не фиксировать, то тут уже рефлекшеном и вперед, делай что хочешь.

 

В шарпе разве что нет бесконечного списка шаблонов (тк он собственно нахуй и не нужен, кроме как раз возможно этого случая с частичным применением), если сильно хочется, можно сделать пяток перегрузок под нужное количество

 

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

 

Если вот очень хочется функциями, то берешь фшарп и делаешь функциоанльные вещи, на то его и придумали.

Частичное применение там точно есть, вероятно для него и список шаблонов реализован соответственно.


Торжество разума в том, чтобы уживаться с теми, у кого этого разума нет. Вольтер.
Чтобы хорошо высыпаться, нужно спать 8 часов в день. И еще столько же ночью.

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации сообщений.

×
×
  • Создать...