Skip to content

Instantly share code, notes, and snippets.

func intDiv(num: Int, den: Int) -> Int? {
switch den {
case 0: return nil
default: return num/den
}
}
let x = intDiv(5, 2)
let y = intDiv(4, 0)
@penryu
penryu / Rational.h
Created November 20, 2014 20:57
Rational implementation I threw together during lecture
/*********************************************************************
* rational.h - Rational type
*/
#include <cstdio>
#include <ostream>
#include <string>
class Rational {
public:
/*
* gcc == gcc (Debian 4.7.2-5) 4.7.2
* clang == Apple LLVM version 6.0 (clang-600.0.54) (based on LLVM 3.5svn)
*
* CXXFLAGS="-Wall -Werror -Wextra -Wconversion -Weffc++ -pedantic -fno-builtin"
*
* NOTES:
* The only fault caught at runtime is the final set of statements, all of which involve
* dereferencing a literal (or macro or const var equal to) zero. This case is ONLY caught
* by clang using the -Wnull-dereference check. GCC did not catch any of these.
class a100 {class a99 {class a98 {class a97 {class a96 {class a95 {class a94 {class a93 {class a92 {class a91 {class a90 {class a89 {class a88 {class a87 {class a86 {class a85 {class a84 {class a83 {class a82 {class a81 {class a80 {class a79 {class a78 {class a77 {class a76 {class a75 {class a74 {class a73 {class a72 {class a71 {class a70 {class a69 {class a68 {class a67 {class a66 {class a65 {class a64 {class a63 {class a62 {class a61 {class a60 {class a59 {class a58 {class a57 {class a56 {class a55 {class a54 {class a53 {class a52 {class a51 {class a50 {class a49 {class a48 {class a47 {class a46 {class a45 {class a44 {class a43 {class a42 {class a41 {class a40 {class a39 {class a38 {class a37 {class a36 {class a35 {class a34 {class a33 {class a32 {class a31 {class a30 {class a29 {class a28 {class a27 {class a26 {class a25 {class a24 {class a23 {class a22 {class a21 {class a20 {class a19 {class a18 {class a17 {class a16 {class a15 {class a14 {class a13 {class a12 {class a11 {class a10 {class a9 {class a8 {cl
@penryu
penryu / bitset.cc
Last active December 15, 2015 16:29
#include "timer.hh"
#include <cstdio>
#include <map>
#include <string>
#include <stdint.h>
using std::map;
using std::string;
#include <cstdio>
class A { void foo() {} };
class B { virtual void foo() {} };
int main()
{
A a1;
B b1, b2;
// -*- mode: c++ -*-
template <typename T>
class Maybe {
public:
static Maybe<T> Nothing();
static Maybe<T> Just(T&);
virtual bool isJust() const = 0;
virtual bool isNothing() const = 0;
@penryu
penryu / gist:3995256
Created November 1, 2012 17:37
clang -S -mllvm --x86-asm-syntax=intel hw5ex1.c
.file "hw5ex1.c"
.text
.globl main
.align 16, 0x90
.type main,@function
main: # @main
.cfi_startproc
# BB#0: # %entry
movabs RAX, 51966
mov DWORD PTR [RSP - 4], 0
// Rational.cs - fraction class with basic math and some overloaded operators
using System;
public class Rational
{
private int numerator;
private int denominator;
(* Rational.fs - provides Rational type *)
type Rational(num:int, denom:int) =
let rec calcGCD(a, b) = if b = 0 then a else calcGCD(b, a%b)
let gcd = calcGCD(num, denom)
let (numerator, denominator) = (num / gcd, denom / gcd)
member r.Numerator = numerator
member r.Denominator = denominator
member r.MixedNumerator = numerator % denominator