Size: a a a

2021 March 14

TZ

Timofey Zakrevskiy in Haskell Start
Михаил
Есть хороший специалист, теории вероятности? Сложная задача по математике, помогите
Учёба или работа?
источник

ХГ

Хаскелль Моисеевич Г... in Haskell Start
Вам нужен исполнитель "сдал и забыл", или обсудить хотите?..
источник

D

Dreamerinnoise in Haskell Start
забавно, что вопрошают в чате по хаскелю, хотя наверное реализация на нём должна быть
источник

NS

Nikita Shirobokov in Haskell Start
Ребят, я правильно понимаю, замыкание это функция созданная в другой функции, которая имеет доступ к переменным предыдущей функции?
источник

NS

Nikita Shirobokov in Haskell Start
Функция имеющая эти переменные - все это замыканием называется?)
источник

ХГ

Хаскелль Моисеевич Г... in Haskell Start
Да.
источник

JS

Jerzy Syrowiecki in Haskell Start
Nikita Shirobokov
Функция имеющая эти переменные - все это замыканием называется?)
в первом приближении — да.

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

можно считать, что замыкания — это правильно реализованные функции
источник

D

Dmitry in Haskell Start
Jerzy Syrowiecki
в первом приближении — да.

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

можно считать, что замыкания — это правильно реализованные функции
А почему вы назвали замыкания правильной реализацией?
И приведите, пожалуйста, пример неправильной реализации
источник

JS

Jerzy Syrowiecki in Haskell Start
Dmitry
А почему вы назвали замыкания правильной реализацией?
И приведите, пожалуйста, пример неправильной реализации
в языке С (с расширениями GCC) можно определить функцию внутри функции

void outer_function() {
   int outer_var;
   void inner_function() {
       use(outer_var);
   }
}


которая будет иметь доступ к переменным из вышестоящей области видимости, но только пока работает внешняя функция. потому что в С функция — это только код, без всяких замыканий
источник

ХГ

Хаскелль Моисеевич Г... in Haskell Start
Dmitry
А почему вы назвали замыкания правильной реализацией?
И приведите, пожалуйста, пример неправильной реализации
Деталь с видимостью хорошо объясняется в книге Sturm Oliver Functional programmimg in C#, глава Encapsulating Data in Closures, стр. 56.
источник

JS

Jerzy Syrowiecki in Haskell Start
Dmitry
А почему вы назвали замыкания правильной реализацией?
И приведите, пожалуйста, пример неправильной реализации
источник
2021 March 15

D

Dmitry in Haskell Start
Спасибо большое, правда пока что немного не понятно. Надо нормально разобраться в работе разных типов памяти.
источник

JS

Jerzy Syrowiecki in Haskell Start
Dmitry
Спасибо большое, правда пока что немного не понятно. Надо нормально разобраться в работе разных типов памяти.
для замыканий это вроде не нужно.

к замыканиям можно подойти с другой стороны, это должно быть попроще:

возьмём простую ФВП

add x = \y -> x + y


add 1 и add 2 — разные функции, они состоят из идентичного исполнимого кода (операция сложения), применённого к разным данным.

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

значит, компилятор должен давать не только исполнимый код, но и прикладывать к нему данные, которые в этом коде используются — такой сложный объект и называется замыканием.

а с точки зрения программиста это просто функция.
источник

NS

Nikita Shirobokov in Haskell Start
Jerzy Syrowiecki
для замыканий это вроде не нужно.

к замыканиям можно подойти с другой стороны, это должно быть попроще:

возьмём простую ФВП

add x = \y -> x + y


add 1 и add 2 — разные функции, они состоят из идентичного исполнимого кода (операция сложения), применённого к разным данным.

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

значит, компилятор должен давать не только исполнимый код, но и прикладывать к нему данные, которые в этом коде используются — такой сложный объект и называется замыканием.

а с точки зрения программиста это просто функция.
спасибо
источник

ХГ

Хаскелль Моисеевич Г... in Haskell Start
Nikita Shirobokov
спасибо
На собесе в Билайн будут спрашивать!
источник

ЖК

Жук Короед in Haskell Start
Товарищи, не могу найти, где лежат операторы над констрейнтами, вроде ~ (в base). Не hooglится что-то.
источник

YS

Yan Shkurinskiy in Haskell Start
Type equality
источник

YS

Yan Shkurinskiy in Haskell Start
Кажется можно так погуглить
источник

к

кана in Haskell Start
Жук Короед
Товарищи, не могу найти, где лежат операторы над констрейнтами, вроде ~ (в base). Не hooglится что-то.
~ встроен в язык, его нет в base

он автоматически доступен в скоупе с включенным GADTs или TypeFamilies
источник

AA

A64m AL256m qn<co... in Haskell Start
Жук Короед
Товарищи, не могу найти, где лежат операторы над констрейнтами, вроде ~ (в base). Не hooglится что-то.
он не над констрейнтами же. если "вроде" это имеются в виду всякие тайп операторы, то в бейз они обычно в неймспейсах Data.Type... и GHC.Type....
источник