Skip to content

Instantly share code, notes, and snippets.

View ashalkhakov's full-sized avatar

Artyom Shalkhakov ashalkhakov

View GitHub Profile
#include
"share/atspre_staload.hats"
(* ****** ****** *)
(* operator interface *)
datatype assoc = ASSOCnone | ASSOCleft | ASSOCright
extern
fun
eq_assoc_assoc (assoc, assoc):<> bool
//
// A simple example of C-union
//
(* ****** ****** *)
//
// Author: Hongwei Xi
// Authoremail: gmhwxiATgmailDOTcom
// Start time: November, 2013
//
(* ****** ****** *)
@ashalkhakov
ashalkhakov / msys2-build-ats2.sh
Last active April 3, 2019 11:35
Installing ATS2 on MSYS2
#!/usr/bin/env sh
######
#
# A shell script for
# installing ATS2 + ATS2-contrib
#
######
#
# Author: Artyom Shalkhakov
(*
* to compile:
*
* $ patscc -DATS_MEMALLOC_LIBC gctest.dats
*
* NOTE: no GC here
*)
#include
"share/atspre_staload.hats"
(*
** Hello, world!
** Q: what's a good way to *not* mix up = and == operators in a conditional?
** A: a good way is via typed programming
*)
(* ****** ****** *)
#include
"share/atspre_define.hats"
@ashalkhakov
ashalkhakov / unbalacend-parens-js
Last active April 6, 2016 09:55
Question on unbalanced parentheses matching in a given string
(*
** Hello, world!
**
** Q: how to extract substring of input string ending at the first unclosed parens?
** ex. sldfkjsf(sldfkj)lskdjff(sdfsdf) -- this is balanced, return as-is
** ex. (sldfkj(sdfsdf(sdfsdf(sdfsdf)sdf)sdf)sdfsdf -- this is NOT balanced, first paren is unclosed (result should be empty)
** ex. esdfd((esdf)(esdf -- first paren is unclosed, should give esdfd
** A: see below
*)
// License: BSD 3-clause
// Author: Artyom Shalkhakov
// Date: Sep 22, 2015
//
// About: this is a POC of n-tuples and row types implemented
// using Reflection.Emit. The mutation interface (get/set methods)
// involves no boxing, but the caller has to supply the type parameter
// that matches the type of the value at the given position. Position
// is resolved using a jump table (TODO: does it translate to threaded
// code?).
@ashalkhakov
ashalkhakov / template-view-eq.dats
Last active August 29, 2015 14:17
View equalities in templates
#include
"share/atspre_staload.hats"
staload UN = "prelude/SATS/unsafe.sats"
#define N 5
extern
fun{env:vt@ype}
loop$fwork (natLt(N), &(env) >> _): void
@ashalkhakov
ashalkhakov / monads.dats
Created December 31, 2014 15:32
Encoding monads in ATS2 with function templates
(* ****** ****** *)
// Monads in ATS2 using templates
#include
"share/atspre_define.hats"
(* ****** ****** *)
// the interface
abst@ype M (t@ype)
@ashalkhakov
ashalkhakov / gist:7526578
Last active July 10, 2019 13:26
Mapping DCIL to D4. Added more constraints. Well, only those that my ORM model needs, at the moment. Added support for clustered and sparse keys.
<?xml version="1.0" encoding="utf-8"?>
<!-- Author: Artyom Shalkhakov (artyom.shalkhakov@gmail.com)
License: BSD v3
I've used bits and pieces of other transforms bundled
with NORMA for reference, so I'm not the sole author
of this.
-->
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"