1
1
mirror of https://github.com/kanaka/mal.git synced 2024-08-18 02:00:40 +03:00
mal/impls/objc/types.h
Joel Martin 8a19f60386 Move implementations into impls/ dir
- Reorder README to have implementation list after "learning tool"
  bullet.

- This also moves tests/ and libs/ into impls. It would be preferrable
  to have these directories at the top level.  However, this causes
  difficulties with the wasm implementations which need pre-open
  directories and have trouble with paths starting with "../../". So
  in lieu of that, symlink those directories to the top-level.

- Move the run_argv_test.sh script into the tests directory for
  general hygiene.
2020-02-10 23:50:16 -06:00

95 lines
1.4 KiB
Objective-C

#import <Foundation/Foundation.h>
//
// Env definition
//
@class MalSymbol;
@interface Env : NSObject
@property (copy) NSMutableDictionary * data;
@property (copy) Env * outer;
- (id)initWithBindings:(Env *)outer binds:(NSArray *)binds exprs:(NSArray *)exprs;
- (id)initWithOuter:(Env *)outer;
- (id)init;
+ (id)fromOuter:(Env *)outer;
+ (id)fromBindings:(Env *)outer binds:(NSArray *)binds exprs:(NSArray *)exprs;
- (NSObject *) set:(MalSymbol *)key val:(NSObject *)val;
- (Env *) find:(MalSymbol *)key;
- (NSObject *) get:(MalSymbol *)key;
@end
//
// Mal Types
//
@interface MalTrue : NSObject
@end
@interface MalFalse : NSObject
@end
@interface MalSymbol: NSString
@end
BOOL string_Q(NSObject * obj);
// Lists
BOOL list_Q(id obj);
NSArray * _rest(NSArray * obj);
// Vectors
@interface MalVector : NSArray
@property (copy) NSArray * array;
@property(readonly) NSUInteger count;
- (id)initWithArray:(NSArray *)arr;
- (id)init;
+ (id)fromArray:(NSArray *)arr;
- (id)objectAtIndex:(NSUInteger)index;
@end
// Hash Maps
NSDictionary * assoc_BANG(NSMutableDictionary * d, NSArray * kvs);
NSDictionary * hash_map(NSArray *kvs);
// Mal Functions
BOOL block_Q(id obj);
// Atoms
@interface MalAtom : NSObject
@property (copy) NSObject * val;
- (id)init:(NSObject *)val;
+ (id)fromObject:(NSObject *)val;
@end
BOOL atom_Q(id obj);
// General functions
BOOL equal_Q(NSObject * a, NSObject * b);