Чтобы добавлять сообщения и комментарии, .

@lurker:
lurker

+    switch (fov) {
+    case 15: return size * 7.595754112725151;
+    case 30: return size * 3.732050807568878;
+    case 45: return size * 2.414213562373095;
+    case 60: return size * 1.732050807568877;
+    default: return size / Math.tan(fov / 2 * Math.PI / 180);
+    }

@waterlaz:
waterlaz

Что я делаю неправильно, что чувствую потребность в таких конструкциях?

#define ZIP(__x_, __xs_, __y_, __ys_) \
     for(auto __x_ = __xs_.begin(); __x_ == __xs_.begin();) \
         for(auto __y_ = __ys_.begin(); \
             __y_ != __ys_.end() && __x_ != __xs_.end(); \
             __y_++, __x_++)
int main()
{
     std::vector<int> xs(3);
     xs = {0, 1, 2};
     std::vector<double> ys(4);
     ys = {3.5, 2.5, 1.5, 0.5};
     
     ZIP(x, xs, y, ys){
         std::cout<<(*x)<<" "<<(*y)<<"\n";
     }
}

Вывод:
0 3.5
1 2.5
2 1.5

@AFAIK:
AFAIK

Жуйк, хочу странного:
У меня на удаленной машине есть башевская переменная, пусть она будет $USERS и в ней будет массив с юзернеймами.
Есть ли какой-нибудь способ сделать так, чтобы эта переменная появилась у меня на машине?
Самое умное, до чего я дошел, это:
USERS=$(ssh example.com 'echo ${USERS[@]}')
но тогда массив перестает быть массивом.

@oxpa:
oxpa

ЖЖ принёс прекрасное:
>#!/usr/bin/perl -w
>use strict;
>
>print ";-)\n" if "foo" =~ //;
>"bar" =~ /bar/;
>print ":-(\n" if "foo" =~ //;

@mismatch:
mismatch

// Как жить без приватных методов в интерфейсах?
// Например, пишем такое в DefaultsInterface.java:
public interface DefaultsInterface {

	default void test1() {
		DefaultsInterfaceCompanion.INSTANCE.test("S1");
	}

	default void test2() {
		DefaultsInterfaceCompanion.INSTANCE.test("S2");
	}
}

enum DefaultsInterfaceCompanion {
	INSTANCE();

	void test(String suffix) {
		System.out.println("test" + suffix);
	}
}

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

@SannySanoff:
SannySanoff

Хотел поделиться радостью, что в плюсцах-то multiline string завезли, вдруг кто прозевал уже несколько лет, в С++14

Вот она мечта идиота (решетка - это произвольный маркер)

                database->update(R"#(
                                                   delete from tab1
                                                   where a=? and c=?
                                                    )#", binds2(number1, string2));

В следующей декаде завезут наверно string interpolation. Доживу, возрадуюсь.

@lurker:
lurker



                         ..sSs$$$$$$b.                                       
                       .$$$$$$$$$$$$$$$.                                     
                    .$$$$$$$$$$$$$$$$$$$$$b.                                 
                  .$$$$$$$$$$$$$$$$$$$$$$$$$                                 
                 $$$$$$$$$$$$$$$$$S'   `$$$$                                 
                 $$$$$$$$$$$$$$S'        $$$                                 
                 $$$$$$$$$$$$$'          `$$.                                
                 `$$$$$$$$$$$$$           `$$$.                              
                   `$$$$$$$$$'       .s$$$ $$ $                              
                     $$$$$$$$$.sSs .s$$s"   s s                              
                      $$$$$$$$$$$$           $P                              
                      `$$$$$$$$$$$s          $                               
                        $$$$$$$$$$$.    ",                                   
                        `$$$$$$$$$$sS$                                       
        s$$$.            `$$$$$$$$$$$$.s"'   .$.                             
        $$$$$.              `$$$$$$$$$$.    .$$$Ss.s$s.                      
         $$$$$.              `$$$$$$$$$P   .$$$$$$$$$$$$.                    
         $$$$$$.               `$$$$$$$' .$$$$$$$$$$$$$$$$.                  
         `$$$$$$.                 $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$s.          
           $$$$$$.                `$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$s.      
         .s$$$$$$$.                 `$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.    
         s  $$$$$$$.                .$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.   
         `$$$$$$$$$$.             .$$$' $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.  
          `$$$$$$$$$$.           s$'   $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$.
          $$$$$$$$$$$$e         $$$     `$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
        .' $$$$$$$$$$7         $$$$       `$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
       "   `$$$$$$$$7         $$$$$       .$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
      $$Ss..$$$$$$$7        $$$$$$$    .s$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
       $$$$$$$$$$$$        $$$$$$$$ .s$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
        $$$$$$$$$$$     .$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
      .$$$$$$$$$$$$$   .$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
      $$$$$$$$$$$$$$  .$$$$$$$$$$$ $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
      $$$$$$$$$$$$$$ .$$$$$$$$$$$' `$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
      $$$$$$$$$$$$$$ $$$$$$$$$$$$   `$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
      $$$$$$$$$$$$$$$$$$$$$$$$$$$    `$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
      `$$$$$$$$$$$$$$$$$$$$$$$$$$     `$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
       $$$$$$$$$$$$$$$$$$$$$$$$$$.     $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
       `$$$$$$$$$$$$$$$$$$$$$$$$$$     `$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
         $$$$$$$$$$$$$$$$$$$$$$$$$      $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
          $$$$$$$$$$$$$$$$$$$$$$$$      $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
           $$$$$$$$$$ $$$$$$$$$$$$      $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
            $$$$$$$$$$$$$$$$$$$$$$      $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
             $$$$$$$$$$$$$$$$$$$$'      $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
             `$$$$$$$$$$$$$$$$$$$       $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
              `$$$$$$$$$$$$$$$$$$.      $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
               `$$$$$$$$$$$$$$$$$$      $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
                 $$$$$$$$$$$$$$$$$.     $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
                  `$$$$$$$$$$$$$$$$     $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
                    $$$$$$$$$$$$$$$     `$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
                    $$$$$$$$$$$$$$$      $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

@lurker:
lurker

:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::-'    `-::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::-'          `::::::::::::::::
:::::::::::::::::::::::::::::::::::::::-  '   /(_M_)\  `:::::::::::::::
:::::::::::::::::::::::::::::::::::-'        |       |  :::::::::::::::
::::::::::::::::::::::::::::::::-         .   \/~V~\/  ,:::::::::::::::
::::::::::::::::::::::::::::-'             .          ,::::::::::::::::
:::::::::::::::::::::::::-'                 `-.    .-::::::::::::::::::
:::::::::::::::::::::-'                  _,,-::::::::::::::::::::::::::
::::::::::::::::::-'                _,--:::::::::::::::::::::::::::::::
::::::::::::::-'               _.--::::::::::::::::::::::#####:::::::::
:::::::::::-'             _.--:::::::::::::::::::::::::::#####:::::####
::::::::'    ##     ###.-::::::###:::::::::::::::::::::::#####:::::####
::::-'       ###_.::######:::::###::::::::::::::#####:##########:::####
:'         .:###::########:::::###::::::::::::::#####:##########:::####
     ...--:::###::########:::::###:::::######:::#####:##########:::####
 _.--:::##:::###:#########:::::###:::::######:::#####:#################
'#########:::###:#########::#########::######:::#####:#################
:#########:::#############::#########::######:::#######################
##########:::########################::################################
##########:::##########################################################
##########:::##########################################################
#######################################################################
#######################################################################
################################################################# dp ##
#######################################################################

@lurker:
lurker

                   ____==========_______
        _--____   |    | ""  " "|       \
       /  )8}  ^^^| 0  |  =     |  o  0  |
     </_ +-==B vvv|""  |  =     | '  "" "|
        \_____/   |____|________|________|
                 (_(  )\________/___(  )__)
                   |\  \            /  /\    
                   | \  \          /  /\ \      
                   | |\  \        /  /  \ \    
                   (  )(  )       (  \   (  )
                    \  / /        \  \   \  \    
                     \|  |\        \  \  |  |
                      |  | )____    \  \ \  )___      
                      (  )  /  /    (  )  (/  /
                     /___\ /__/     /___\ /__/

@vt:
vt

║KKT_8_14_02_02_Full.EXE                                │  69 M║║
║Read.me                                                │  2715║║
║                                                       │      ║║
║                                                       │      ║║
║                                                       │      ║║
║                                                       │      ║║
║                                                       │      ║║
║                                                       │      ║║
║                                                       │      ║║
║                                                       │      ║║
║                                                       │      ║║
║                                                       │      ║║
║                                                       │      ║║
║                                                       │      ║║
║                                                       │      ║║
║
║                                   ╔════════════════════════ Copy ════════════════════════╗
║                                   ║ Copying the file                                     ║
║                                   ║ KKT_8_14_02_02_Full.EXE                              ║
║                                   ║ to                                                   ║
║                                   ║ \\192.168.4.254\C$\Install\KKT_8_14_02_02_Full.EXE   ║
║                                   ║ ███░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░   7% ║
║                                   ╟─────────────────────── Total ────────────────────────╢
║                                   ║ Files processed: 0                                   ║
║                                   ║ Bytes processed: 2 097 1524 073 708 503 040          ║
║                                   ╟──────────────────────────────────────────────────────╢
║                                   ║ Time: 00:02:18    Remaining: 00:29:40     37,10 KB/s ║
║                                   ╚══════════════════════════════════════════════════════╝
║
║                                                       │      ║║

@mabu:
mabu

[email protected]@
[email protected]     
                             .@.      
    ,,,         _____________| |_     
   ,@$@,       / __  \       | | \    
  ,@$@$@,     / /  \  \      | |  \   
 ,@$@$@$@,   /  \__/   \           \  
 ,@\|| /@,  /___________\___________\ 
,@$ ||/@[email protected]|  _______  |  .____.   | 
 @,\[email protected]| |   |   | |  |    |   | 
    ||/     | |---|---| |  |   ]|   | 
mabu||      | |___|___| |  |    |   | 
`17 ||      |___________|__!____!___| 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

@qnikst:
qnikst

http://juick.com/rufuse/2872282 в вебне рендеринг ссылки поломали

```
<a href="https://hackage.haskell.org/package/text-icu-0.7.0.1/docs/Data-Text-ICU-Regex.html ," rel="nofollow">hackage.haskell.org</a>
```

@mabu:
mabu

Scope
		Dim hDC As HDC = GetDC(hWin)
		
		ReleaseDC(hWin, hDC)
End Scope

@oxpa:
oxpa

echo 'КПРФ' | iconv -t cp1251 | iconv -f koi8-r

@segfault:
segfault

octave:3> a = 8000 / 12380664
a =    6.4617e-04
octave:4> b = 300 / 720575
b =    4.1633e-04
octave:5> a / b
ans =  1.5520

Интересный факт, население Москвы в среднем в 1.552 раза тупее населения Тюмени.

@Strephil:
Strephil

Я написал дурацкий быдлокод!
Вставка вот такого фрагмента не помогает. Всё равно программа не работает.
for (i = 0; i < 100; i++)
  {
    _asm nop;
  }

А вот вставка:
for (i = 0; i < 2; i++)
  {
    _asm nop;
    _asm nop;
  }
Помогает, всё работает. Может быть, дело не в задержке, а в выравнивании адресов?..

@SannySanoff:
SannySanoff

Открыл для себя Vert.x, плюс Kotlin = полностью асинхронное всё: http сервер, https (!!) клиент, кафка, постгрес, вебсокеты уже то понятно. В котлине 1.1.1 все на корутинах.. прямо скала. Адопшн кажется будет побольше чем у скалы, поэтому ожидаем вскорости бум. С небольшим набором корутинных врапперов пишем буквально следующее:

    suspend fun graphAPI(request: String, access: String) : JsonObject {
        val resp = VX.getJson("https://graph.facebook.com/v2.3/$request&access_token=$access")
        when(resp.statusCode) {
            200 -> return JsonObject(resp.response)
            else -> throw IOException("Facebook invalid response: "+resp.toString());
        }
    }

        when (req.path()) {
            "/register_server" -> {
                exec("delete from other_servers where ip_address=${v(param("ip"))}")
                exec("insert into other_servers(ip_address, hostname) values(${v(param("ip"))},${v(param("host"))}) ")
                commit()
                output(JsonObject(Pair("result","OK")))
            }

(во втором куске кода sql bindings безопасные если шо)
(может можно кое что еще проще, пока не знаю как)
(обработка ошибок, выделение коннекшнов, транзакциы всякие итп - все снаружи)
(ексепшны в котлине отлично дружат в асинхронном коде)
(а и не скажешь, что асинхронный, верно?)

21 век настал.

@ndtimofeev:
ndtimofeev

import Data.Proxy
import Data.Kind

type family Saturate (f :: k) (v :: a) :: Type where
    Saturate (f :: a -> Type) v = f v
    Saturate (f :: a -> k)    v = Saturate (f v) v

data Select f = Select (forall a. Saturate f a -> a)

sel :: Proxy f -> (forall a. Saturate f a -> a) -> Select f
sel _ = Select

data T a b c = T { x :: a, y :: b, z :: c }

Есть такой кусочек кода. Всё как всегда:
Select x — реджектится компилятором (без явной аннотации типа) потому что из Saturate f a нельзя вывести f.
sel x — работает, но таскать Proxy (или явную аппликацию типа) не хочется.
Есть шанс сделать красиво?

@trapdoor:
trapdoor

type Oh = IO
type Shit = ()

main :: Oh Shit

@den-po:
den-po

баловались в фидо

      ,gSS$$SSg,
    ,J$$$$$$$$$$S,     шуршал себе по лесу неспеша,
   ,Y'  `$$$$$$$$$L             топтал дорожки, любовался елкой...
   $'g$$b`$$$$$$$$B    вдруг на меня, такого малыша,
   `j'$'$h`$$$$$$$Y             свалилось яблоко,
@,.d$g$g$$ $$$$$$Y'                     чуть-чуть помяв иголки :)
 "╚S$$' Y╝'`''''

@trapdoor:
trapdoor

Можно увеличить границу сброса тегов в подвал до 990 (>920)?

@lurker:
lurker

забавный ascii-комикс из твиттера

(• • )                    (°- ° )

(• • )          HEY> (°0° )

( • •) <?               (°- ° )

( • •)                   t(°^°t)

@ndtimofeev:
ndtimofeev

λ> type family Null :: Constraint where Null = ()
λ> type AddShow a b = (Show b, a)
λ> :kind! FoldL AddShow Null [Int, Char]
FoldL AddShow Null [Int, Char] :: Constraint
= (Show Char, (Show Int, () :: Constraint))
λ>

Так и живём.

@ndtimofeev:
ndtimofeev

Довольно забавно, но вот такой тест:

quickCheck $ frequency [(0, pure True)]

Очень плохо воспроизводится.

@ndtimofeev:
ndtimofeev

В догонку к #2862204

isDiscard :: AnException -> Bool
(discard, isDiscard) = (E.throw (E.ErrorCall msg), isDiscard)
 where
  msg = "DISCARD. " ++
        "You should not see this exception, it is internal to QuickCheck."
  isDiscard e =
    case E.fromException e of
      Just (E.ErrorCall msg') -> msg' == msg
      _ -> False

Ну вот примерно так всё там внутри и выглядит.

@lurker:
lurker

лучше и не скажешь

@waterlaz:
waterlaz

Ну отлично, блеать //_-)

 # rmmod osscore
rmmod: ERROR: Module osscore is in use

 # lsmod
Module                  Size  Used by
osscore               552069  -1
e1000e                164574  0

@qnikst:
qnikst

1.hs:46:44: error:
    • Could not deduce: q ~ (a0 -> q0)
      from the context: Cxq t q
        bound by the type signature for:
                   foo :: Cxq t q => V t -> [Def] -> [Val] -> q -> Exq t q
        at 1.hs:44:1-55
      or from: t ~ 'S a
        bound by a pattern with constructor:
                   :. :: forall (a :: S). String -> V a -> V ('S a),
                 in an equation for ‘foo’
        at 1.hs:46:6-12
      ‘q’ is a rigid type variable bound by
        the type signature for:
          foo :: forall (t :: S) q.
                 Cxq t q =>
                 V t -> [Def] -> [Val] -> q -> Exq t q
        at 1.hs:44:8
    • In the second argument of ‘(.)’, namely ‘q’
      In the first argument of ‘(=<<)’, namely ‘foo ss df vals . q’
      In the expression:
        foo ss df vals . q =<< fs =<< getValue s defs vals
    • Relevant bindings include
        q :: q (bound at 1.hs:46:23)
        foo :: V t -> [Def] -> [Val] -> q -> Exq t q (bound at 1.hs:45:1)


проблема т.к. у меня kind q зависит от значения (и типа) V t, если это V Z то kind *,  если V (S t) то * -> *.
это как-нить вообще обходится?

@lurker:
lurker

изощрённенько

<div ng-if="init">{{init()}}</div>

function SomeController ($scope) {
	$scope.init = function () {
		delete $scope.init;
		init ();
	};
}

@lurker:
lurker

https://pbs.twimg.com/media/C2V9PoEWIAA1gma.jpg:large jck, т прнс?

@ndtimofeev:
ndtimofeev

Господа java-программисты, по этому бэктрейсу можно сказать чего не хватает этому куску говна скомпилированному в 2014ом году?

ERROR: Uncaught Exception: java.lang.ExceptionInInitializerError
        at com.bric.swing.QDialog.createOKButton(Unknown Source)
        at com.bric.swing.QDialog.createDialogFooter(Unknown Source)
        at com.bric.swing.QDialog.showDialog(Unknown Source)
        at com.bric.swing.QDialog.showDialog(Unknown Source)
        at com.treestar.lib.dialogs.SDialogs.notify(Unknown Source)
        at com.treestar.lib.dialogs.SDialogs.notify(Unknown Source)
        at com.treestar.lib.dialogs.SDialogs.notify(Unknown Source)
        at com.treestar.flowjo.main.Main.javaCheck(Unknown Source)
        at com.treestar.flowjo.main.Main.initMain(Unknown Source)
        at com.treestar.flowjo.main.Main.main(Unknown Source)
Caused by: java.lang.NullPointerException
        at com.treestar.lib.FJCommand.<clinit>(Unknown Source)
        ... 10 more

Нет, исходников у меня нет.

@segfault:
segfault

Тупой вопрос: есть готовое, чтобы заменить имя файла вида

~/file/path

на

/home/user/file/path

Чтобы правильно, с учётом всех подводных камней и самому не писать?

@segfault:
segfault

Prelude> divMod 5 60
(0,5)
Prelude> divMod (-5) 60
(-1,55)

Я как-то не правильно понимаю целочисленное деление?

@segfault:
segfault

А я тут хаскельным квикчеком нашёл весёлый кейс

> d = new Date(2006, 02, 26, 02, 28, 53);
Sun Mar 26 2006 03:28:53 GMT+0600 (+06)
> d = new Date(2006, 02, 26, 0, 0, 0);
Sun Mar 26 2006 00:00:00 GMT+0500 (+05)
> d = new Date(2006, 02, 26, 1, 0, 0);
Sun Mar 26 2006 01:00:00 GMT+0500 (+05)
> d = new Date(2006, 02, 26, 2, 0, 0);
Sun Mar 26 2006 03:00:00 GMT+0600 (+06)
> d.getHours()
3

Работает в последнем хромаче, в фоксе, наоборот, час становится на 1 меньше. Гуголь чет ни чего не говорит по этому поводу. Я первооткрыватель?

@lurker:
lurker

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

@qnikst:
qnikst

все что вам хотелось знать о жуйке:

wget -qO- http://api.juick.com/messages?tag=programming | runhaskell 1.hs  > programming.csv
wget -qO- http://api.juick.com/messages?tag=мж | runhaskell 1.hs  > mjo.csv


> p <- read.table("programming.csv",header=TRUE)


> summary(p)
         author     replies          likes
 qnikst     :9   Min.   : 0.00   Min.   :0.00
 SannySanoff:3   1st Qu.: 0.75   1st Qu.:0.00
 max630     :2   Median : 6.00   Median :0.00
 OCTAGRAM   :2   Mean   :11.15   Mean   :0.25
 drvlat     :1   3rd Qu.:10.25   3rd Qu.:0.00
 justonemore:1   Max.   :81.00   Max.   :2.00
 (Other)    :2

> mjo <- read.table("mjo.csv",header=TRUE)


> summary(mjo)
       author     replies           likes
 provaton :5   Min.   :  0.00   Min.   :0.0
 Monstreek:4   1st Qu.:  0.00   1st Qu.:0.0
 Bounty   :3   Median :  2.50   Median :0.0
 O01eg    :2   Mean   : 28.45   Mean   :0.2
 Strephil :2   3rd Qu.: 17.75   3rd Qu.:0.0
 lex2d    :1   Max.   :151.00   Max.   :1.0
 (Other)  :3

@ndtimofeev:
ndtimofeev

type family TestTail t where
    TestTail (HList xs) = xs
    TestTail t          = '[t]

data HList xs where
    HCons :: x -> y -> HList (x ': TestTail y)

Интересно, зачем я всегда добавлял Nil в гетеросписки?

@ndtimofeev:
ndtimofeev

Есть тип data Box (xs :: [*]) where { Box :: (KnownNat n, Elem a xs ~ 'True) => a -> Proxy n -> Box xs }, есть типофамилия что-то вроде ForAll (cxt :: * -> Constraint) (xs :: [*]), которая конструирует констрейнт путём применения cxt ко всем типам в списке xs. Теперь я хочу функцию вида withBox :: ForAll cxt xs => Proxy cxt -> Box xs -> (forall a. cxt a => a -> t) -> t, которая будет применять функцию про констрейнт к содержимому коробки при условии, что для всех возможных вариантов содержимого коробки констрейнт определён.

@Shchvova:
Shchvova

вставлять видосики с ютубчика что бы выглядело ОК

<div style="position:relative; width:100%; height:0px; padding-bottom:56.25%;">
    <iframe style="position:absolute; left:0; top:0; width:100%; height:100%" frameborder="0" allowfullscreen="allowfullscreen"
        src="https://www.youtube.com/embed/peyo_97BOmI">
    </iframe>
</div>


@ndtimofeev:
ndtimofeev

У меня тут регионопроблемы. Пусть у меня есть функции вида:

doWith :: Shit res -> (forall s. res s -> Reg s ()) -> IO ()

traverseRes :: (Generic (res s), Magic (Rep (res s))) => res s -> Reg s ()

По отдельности всё хорошо, но если сделать что-то вроде:

\hnd -> doWith hnd traverseRes

Незамедлительно наступает ад, поскольку функции очень нужен констрейнт от traverseRes, но s уже стёрто и задать его никак нельзя. Собственно два вопроса: можно ли как-то убедить компилятор что констрейнты справедливы для любого s и как с этим борются при использовании регионов здорового человека?