← All posts tagged code

bitfield
C++ code c++14
auto list = [](auto ...xs) { 
    return [=](auto access) { return access(xs...); }; 
}; 

auto head = [](auto xs) { 
    return xs([](auto first, auto ...rest) { return first; }); 
}; 

auto tail = [](auto xs) { 
    return xs([](auto first, auto ...rest) { return list(rest...); }); 
}; 

auto length = [](auto xs) { 
    return xs([](auto ...z) { return sizeof...(z); }); 
}; 

int len = length(list(1, '2', "3"));  // 3
bitfield
code fp Swift
5> [1,2,3].map { $1 * 10 }
<repl>:5:9: error: type '(($T7, ($T7, $T8) -> ($T7, $T8) -> $T6) -> ($T7, ($T7, $T8) -> $T6) -> $T6, (($T7, $T8) -> ($T7, $T8) -> $T6, $T8) -> (($T7, $T8) -> $T6, $T8) -> $T6)' does not conform to protocol 'IntegerLiteralConvertible'

6> let x = [1,2,3]
x: [Int] = 3 values {
  [0] = 1
  [1] = 2
  [2] = 3
}

7> x.map { $1 * 10 }
<REPL>:8:7: error: 'Int' is not a subtype of '(($T5, ($T5, $T6) -> ($T5, $T6) -> $T4) -> ($T5, ($T5, $T6) -> $T4) -> $T4, (($T5, $T6) -> ($T5, $T6) -> $T4, $T6) -> (($T5, $T6) -> $T4, $T6) -> $T4)'
x.map { $1 }

и эти люди ругают С++ за сообщения об ошибках...
inb4, правильный код --  x.map { $0 * 10 }
bitfield
Erlang code Haskell
решил "потягать штангу" на задачке от maxim@lj
получился кусок такого веселого кода
solve7x2  deck = match2 deck >>= match2 >>= match2 >>= match2 >>= match2 >>= match2 >>= match2
solve554  deck = match5 deck >>= match5 >>= match4
solve5333 deck = match5 deck >>= match3 >>= match3 >>= match3
solve4433 deck = match4 deck >>= match4 >>= match3 >>= match3

match? :: Deck -> [Deck], если чё.
bitfield
Linux code жалуюсь SUSE
Разработчики openSUSE -- <нехорошее слово>. 
Есть программа, назовем ее abc, плагины к которой на других системах находятся в /usr/lib/abc (c погрешностью до /usr/lib64/abc или /usr/lib/x86_64-linux-gnu/abc). В сусе эти плагины лежат в /usr/lib64/libabc-1_0.
PS. Project Owner пофиксил мой код (беру из `ldd abc` путь к libabc.so, к нему добавляю "/abc"), заменив на другой костыль: вызов abc с несуществующим плагином и парсинг пути из сообщения об ошибке.
bitfield
С++ code ад HR
код из тестового:

class Base {
public:
  virtual ~Base() {}
  virtual void print(std::ostream &) const = 0;
};

typedef Base * PBase;

class Derived {
public:
   Derived(int data) { this->data = data; }
   virtual ~Derived() {}

   virtual void print(std::ostream & s) 
   { s << data; } 
private:
   int data;
};

void print_it(std::ostream & s, Base * p) { p->print(s); }

int main() {
  print_it(std::cout, PBase(new Derived(5)));
}

Если бы не отсутствие const у Derived::print, я бы и не заметил...
bitfield
code objc
Еще один вариант "типизированных" коллекций в Objective C

#define NSArray_(T) NSArray
#define NSDictionary_(K,V) NSDictionary

NSArray_(NSString) * strings = …
NSDictionary_(NSString,NSString) * dict = …