Pull to refresh
0
0
Send message

https://scastie.scala-lang.org/yqOOLQ3aS2SsQsDlsKsjVQ
переполнение стека исправлять не буду, я обошелся Scala 2 :)

А для Int'ов? Я посмотрел реализацию LTE в Idris и, кажется, придумал как сделать то же самое в Scala 3 (через https://dotty.epfl.ch/docs/reference/new-types/match-types.html)
Но тогда мне придется писать еще свою реализацию Nat, а я, право, ленивый

Для этого его достаточно положить в [стандартную] библиотеку, в Idris'е же оно не из вакуума появляется

Помнит, x.type != Int, это тип конкретной переменной x, которая в скоупе:

scala> val x = 15
val x: Int = 15

scala> val y: x.type = x
val y: x.type = 15

scala> val y: x.type = 15
                       ^
       error: type mismatch;
        found   : Int(15)
        required: x.type

Что такое x.type?

тип переменной х

Олсо, поменял местами x и y в when, код всё ещё компилируется. Ерунда какая-то.

разумеется, компилируется, ведь Lte это просто кастомный класс в сниппете. Он скомпилируется даже если назовете его Unicorn. Могу переложить в пакет Prelude, если так будет лучше :)

Тут ключевой момент вот в чём. Его тип может зависеть от соответствующих значений? Ну, чтобы тип имплиситного параметра указывал на то, что это именно свидетельство того, что x меньше y?

Я думаю, элегантного решения ни во 2, ни в 3 Scala действительно нет

Какой именно проверки? Есть пример на каком-то реальном языке? В Scala тоже можно потребовать какой-нибудь имлиситный параметр и создавать его в if'e :)

Каким образом? Вот я ввел с консоли два NonNegative, как ваш код вернет NonNegative для x - y?

Добавить перегруженные методы для refined типа можно, через обычные extension methods, сильно специфического для Refined ничего в этом плане нет, кроме "поднятия" обернутого типа
Зависимые типы в Scala есть, поэтому разницу двух NonNegatives на этапе компиляции сделать можно, если это литералы (значения известны также на этапе компиляции)
Refined это сторонняя библиотека и в плане использования типов ничем не отличается от любых других типов, будь то в кейс или обычных классах и полях

Для этого вы можете использовать паттерн Smart Constructor (https://medium.com/@supermanue/smart-constructors-in-scala-fa5a03e25326) совместно с Refined

Недвижимость вообще сложно подделать, а драгоценности как раз из тех объектов, когда «её потом продать, нужно быть текушим владельцем подлинной» экономически выгодно :) Но суть я понял, спасибо
Вопрос в том, как сообщить (читай заставить) покупателю об этом условии. Если рассматривается только утопичный сценарий, когда государство котирует блокчейн и все расплачиваются криптой, то вопрос снимаю :)
Можно возразить: а почему бы не сшить подделку с серийным номером 349587? Можно поступить и так, но чтобы её потом продать, нужно быть текушим владельцем подлинной сумки, что не имеет никакого экономического смысла, если вы торгуете сумками.

Тут не понял, почему никакого? Заказываем у производителя одну копию оригинального товара, чтобы за нами закрепился серийный номер, а дальше штампуем подделки с тем же номером и продаем
На первом шаге вы оставите на берегу козу с капустой
По поводу 6 задачи:
В разработанной вами системе я бы постоянно затаривался товарами со стоимостью <= 24 руб)
Поправлю – не сотовую связь, а только мобильный интернет
Первый раз прочитал «медитационных ретвитов», подумал технологии добрались и туда
У среднего американского домохозяйства телефоны на андроиде
Господа, простите за оффтоп, но можете подсказать, что сейчас в дистрибутивах/DE с поддержкой ретины? Особенно интересует Cinnamon, последний раз когда ставил Mint, необходим был микроскоп, и решить эту проблему глобально помогала только магия с xrandr, которая растягивала разрешение 1366x768 на ретину, что тоже выглядело не ахти
1

Information

Rating
Does not participate
Registered
Activity