Size: a a a

2021 June 03

DK

Daniil Kostin in ФП
что подразумевается под композицией?
https://golang.org/doc/effective_go#embedding
в дарте так примесями можно делать
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in ФП
источник

DK

Daniil Kostin in ФП
можно все тоже самое на интерфейсах делать, причем все практически абсолютно тоже самое.
еще примеси есть, что помогает не писать оверайды
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in ФП
Так об этом и речь.
Пример из пхп
наследование:
abstract class Bar
{
public function foo($i)
{
$i = $this->ba($i);
$i = $this->baz($i);
return $this->qux($i);
}

abstract protected function ba($i);
abstract protected function baz($i);
abstract protected function qux($i);
}

Композиция:
interface BarStrategy
{
public function ba($i);
public function baz($i);
public function qux($i);
}

class Bar
{
private $strategy;

public function __construct(BarStrategy $strategy)
{
$this->strategy = $strategy;
}

public function foo($i)
{
$i = $this->strategy->ba($i);
$i = $this->strategy->baz($i);
return $this->strategy->qux($i);
}
}
источник

P

Purple in ФП
Конечно, можно implements, но в моем случае от этого не будет пользы — нет смысла.
источник

˸A

˸̧̨ ͅBlack Akula˸̧̨ ... in ФП
Кстати, в тайп-скрипт можно не только наследоваться от класса, но и имплементировать класс как интерфейс
источник

a

atcq (Алексей)... in ФП
в ts много дичи можно
источник

a

atcq (Алексей)... in ФП
например объявить класс, а потом дополнить его неймспейсом
источник
2021 June 04

АП

Антон Пилипчук... in ФП
Решил поэкспериментировать с хаскель.

Почему ошибка в первом выражении (там где let), но выводится тип во второй команде (там где :t) ?

Обратите внимание, я не использую []
источник

VB

Vadym Biliuk in ФП
А что вы пытаетесь сделать? (:) это оператор для соединения элемента со списком
Т.е валидная запись в виде 2 : []
Или 3 : [1, 2]
источник

АП

Антон Пилипчук... in ФП
Я всего лишь экспериментирую)

О том что вы пишете я знаю.

Мне интересно почему команде :t удалось вывести тип?

Ещё интересно то что : имеет тип
(:) :: a -> [a] -> [a]

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

а у меня второй аргумент это 3.

получается что 3 список???
источник

K

Kir in ФП
В хаскелле числовые констатны полиморфны. Если как то объявить instance Num [a], то код будет работать.
источник

АП

Антон Пилипчук... in ФП
Интересно ему как-то можно сказать что [a] это список бит
То есть написать что то вроде:
let f = 2:3 :: BitList
источник

K

Kir in ФП
Можно. А зачем?
источник

АП

Антон Пилипчук... in ФП
Я всего лишь экспериментирую)

Спасибо)

Короче я понял что тип хаскель вывести смог но из-за полиморфности числовых констант он не понимает что такое 2:3
источник

K

Kir in ФП
Не, он не понимает потому что инстанса нет - о чём ghc и говорит
источник

АП

Антон Пилипчук... in ФП
ну да)
источник

AK

Alexey Kholodkov in ФП
https://t.me/haskell_learn хороший чатик для начинающих хаскелистов
источник

JS

Jerzy Syrowiecki in ФП
тип выражения вывести может компилятор, потому что вывод типов работает в самом широком режиме, со всеми фичами,

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

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

P

Purple in ФП
Друзья, я что-то несколько запутался в композиции Клейсли. Задача – измерить время работы нескольких функций, сохранив каждый замер с описанием. Сделал вот так – но оно что-то категорически нечитаемо. Можно что-то исправить?
источник