Skip to content

Instantly share code, notes, and snippets.

struct User {
let username: String
}
extension User: CustomStringConvertible {
var description: String { return "username: \(username)" }
}
// DAO
@yashigani
yashigani / natural-number.swift
Created August 27, 2015 00:50
My live coding in #関モバ
enum N {
case Zero
indirect case Succ(N)
static func succ(n: N) -> N {
return .Succ(n)
}
}
let zero: N = .Zero
@yashigani
yashigani / a.swift
Created July 27, 2015 23:19
Lazy stored propertyとImplicitly Unwrapped Optionalを組み合わせた時のおもしろい挙動
final class Person {
var name: String
lazy var greeting: ImplicitlyUnwrappedOptional<String> = {
return "Hello, \(self.name)"
}()
init(_ name: String) {
self.name = name
}
}
var p = Person("Steve")
@yashigani
yashigani / natural-number.swift
Last active August 29, 2015 14:25
indirectが実装されたのでSwiftで自然数を作りました
enum N {
case Zero
indirect case Succ(N)
init(_ n: UInt) {
switch n {
case 0: self = .Zero
default: self = .Succ(N(n - 1))
}
}
import Foundation
public class JSON: Printable {
private let object: JSONObject
init(_ object: AnyObject?) {
self.object = JSONObject.parse(object)
}
private init(_ object: JSONObject) {
self.object = object
}
@yashigani
yashigani / gist:a57a0cc55e986b43e213
Last active August 29, 2015 14:12
FizzBuzz by swift
// FizzBuzz by Enum
enum FizzBuzz {
case Fizz, Buzz, FizzBuzz, Other(Int)
var state: String {
switch self {
case .Fizz: return "Fizz"
case .Buzz: return "Buzz"
case .FizzBuzz: return "FizzBuzz"
case .Other(let i): return "\(i)"
use strict;
use warnings;
use 5.010;
my $debug = $ENV{DEBUG} // 1;
my $answer = int(1 + rand 100);
say "answer is $answer" if $debug;
GAME: {
enum Debug {
case Log(Bool)
func log(message: String) {
switch self {
case Log(true):
println(message)
case Log(false):
return
default:
return
@yashigani
yashigani / gist:10426186
Last active August 29, 2015 13:58
Accessing instance variables in Objective-C

ivarpropertyの純情な関係

@yashigani

Objective-Cにおけるインスタンス変数

@interface Person {
  NSString *_firstname;
  NSString *_lastname;
}
@yashigani
yashigani / brainfuck.hs
Created March 18, 2014 13:40
Brainfuck on Haskell(only Hello, world...)
helloworld = "+++++++++[>++++++++>+++++++++++>+++++<<<-]>.>++.+++++++..+++.>-.------------.<++++++++.--------.+++.------.--------.>+."
type Code = (String, String)
type Pointer = ([Int], [Int], [Int])
parse :: Code -> Pointer -> Pointer
parse ([], _) p = p
parse ('>':xs, bs) p = parse (xs, '>':bs) $ incrementP p
parse ('<':xs, bs) p = parse (xs, '<':bs) $ decrementP p
parse ('+':xs, bs) p = parse (xs, '+':bs) $ increment p