Merge branch 'develop' into commutative-error
This commit is contained in:
		
						commit
						fe493af0b9
					
				
							
								
								
									
										2
									
								
								packages/components/.prettierignore
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								packages/components/.prettierignore
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,2 @@ | ||||||
|  | dist/ | ||||||
|  | storybook-static | ||||||
|  | @ -131,7 +131,7 @@ export interface SquiggleChartProps { | ||||||
|   /** variables declared before this expression */ |   /** variables declared before this expression */ | ||||||
|   environment?: unknown; |   environment?: unknown; | ||||||
|   /** When the environment changes */ |   /** When the environment changes */ | ||||||
|   onEnvChange?(env: unknown): void; |   onChange?(expr: squiggleExpression): void; | ||||||
|   /** CSS width of the element */ |   /** CSS width of the element */ | ||||||
|   width?: number; |   width?: number; | ||||||
|   height?: number; |   height?: number; | ||||||
|  | @ -141,8 +141,7 @@ export const SquiggleChart: React.FC<SquiggleChartProps> = ({ | ||||||
|   squiggleString = "", |   squiggleString = "", | ||||||
|   sampleCount = 1000, |   sampleCount = 1000, | ||||||
|   outputXYPoints = 1000, |   outputXYPoints = 1000, | ||||||
|   environment = [], |   onChange = () => {}, | ||||||
|   onEnvChange = () => {}, |  | ||||||
|   height = 60, |   height = 60, | ||||||
|   width = NaN, |   width = NaN, | ||||||
| }: SquiggleChartProps) => { | }: SquiggleChartProps) => { | ||||||
|  | @ -158,8 +157,8 @@ export const SquiggleChart: React.FC<SquiggleChartProps> = ({ | ||||||
|   let expressionResult = run(squiggleString, samplingInputs); |   let expressionResult = run(squiggleString, samplingInputs); | ||||||
|   let internal: JSX.Element; |   let internal: JSX.Element; | ||||||
|   if (expressionResult.tag === "Ok") { |   if (expressionResult.tag === "Ok") { | ||||||
|     onEnvChange(environment); |  | ||||||
|     let expression = expressionResult.value; |     let expression = expressionResult.value; | ||||||
|  |     onChange(expression); | ||||||
|     internal = ( |     internal = ( | ||||||
|       <SquiggleItem expression={expression} width={_width} height={height} /> |       <SquiggleItem expression={expression} width={_width} height={height} /> | ||||||
|     ); |     ); | ||||||
|  |  | ||||||
|  | @ -3,6 +3,7 @@ import * as ReactDOM from "react-dom"; | ||||||
| import { SquiggleChart } from "./SquiggleChart"; | import { SquiggleChart } from "./SquiggleChart"; | ||||||
| import { CodeEditor } from "./CodeEditor"; | import { CodeEditor } from "./CodeEditor"; | ||||||
| import styled from "styled-components"; | import styled from "styled-components"; | ||||||
|  | import type { squiggleExpression } from "@quri/squiggle-lang"; | ||||||
| 
 | 
 | ||||||
| export interface SquiggleEditorProps { | export interface SquiggleEditorProps { | ||||||
|   /** The input string for squiggle */ |   /** The input string for squiggle */ | ||||||
|  | @ -22,7 +23,7 @@ export interface SquiggleEditorProps { | ||||||
|   /** The environment, other variables that were already declared */ |   /** The environment, other variables that were already declared */ | ||||||
|   environment?: unknown; |   environment?: unknown; | ||||||
|   /** when the environment changes. Used again for notebook magic*/ |   /** when the environment changes. Used again for notebook magic*/ | ||||||
|   onEnvChange?(env: unknown): void; |   onChange?(expr: squiggleExpression): void; | ||||||
|   /** The width of the element */ |   /** The width of the element */ | ||||||
|   width: number; |   width: number; | ||||||
| } | } | ||||||
|  | @ -43,7 +44,7 @@ export let SquiggleEditor: React.FC<SquiggleEditorProps> = ({ | ||||||
|   diagramStart, |   diagramStart, | ||||||
|   diagramStop, |   diagramStop, | ||||||
|   diagramCount, |   diagramCount, | ||||||
|   onEnvChange, |   onChange, | ||||||
|   environment, |   environment, | ||||||
| }: SquiggleEditorProps) => { | }: SquiggleEditorProps) => { | ||||||
|   let [expression, setExpression] = React.useState(initialSquiggleString); |   let [expression, setExpression] = React.useState(initialSquiggleString); | ||||||
|  | @ -69,7 +70,7 @@ export let SquiggleEditor: React.FC<SquiggleEditorProps> = ({ | ||||||
|         diagramStop={diagramStop} |         diagramStop={diagramStop} | ||||||
|         diagramCount={diagramCount} |         diagramCount={diagramCount} | ||||||
|         environment={environment} |         environment={environment} | ||||||
|         onEnvChange={onEnvChange} |         onChange={onChange} | ||||||
|       /> |       /> | ||||||
|     </div> |     </div> | ||||||
|   ); |   ); | ||||||
|  | @ -80,7 +81,7 @@ export function renderSquiggleEditorToDom(props: SquiggleEditorProps) { | ||||||
|   ReactDOM.render( |   ReactDOM.render( | ||||||
|     <SquiggleEditor |     <SquiggleEditor | ||||||
|       {...props} |       {...props} | ||||||
|       onEnvChange={(env) => { |       onChange={(expr) => { | ||||||
|         // Typescript complains on two levels here.
 |         // Typescript complains on two levels here.
 | ||||||
|         //  - Div elements don't have a value property
 |         //  - Div elements don't have a value property
 | ||||||
|         //  - Even if it did (like it was an input element), it would have to
 |         //  - Even if it did (like it was an input element), it would have to
 | ||||||
|  | @ -96,10 +97,10 @@ export function renderSquiggleEditorToDom(props: SquiggleEditorProps) { | ||||||
|         //  viewof env = cell('normal(0,1)')
 |         //  viewof env = cell('normal(0,1)')
 | ||||||
|         //  to work
 |         //  to work
 | ||||||
|         // @ts-ignore
 |         // @ts-ignore
 | ||||||
|         parent.value = env; |         parent.value = expr; | ||||||
| 
 | 
 | ||||||
|         parent.dispatchEvent(new CustomEvent("input")); |         parent.dispatchEvent(new CustomEvent("input")); | ||||||
|         if (props.onEnvChange) props.onEnvChange(env); |         if (props.onChange) props.onChange(expr); | ||||||
|       }} |       }} | ||||||
|     />, |     />, | ||||||
|     parent |     parent | ||||||
|  |  | ||||||
|  | @ -20,6 +20,7 @@ describe("eval on distribution functions", () => { | ||||||
|   }) |   }) | ||||||
|   describe("unaryMinus", () => { |   describe("unaryMinus", () => { | ||||||
|     testEval("mean(-normal(5,2))", "Ok(-5)") |     testEval("mean(-normal(5,2))", "Ok(-5)") | ||||||
|  |     testEval("-normal(5,2)", "Ok(Normal(-5,2))") | ||||||
|   }) |   }) | ||||||
|   describe("to", () => { |   describe("to", () => { | ||||||
|     testEval("5 to 2", "Error(Math Error: Low value must be less than high value.)") |     testEval("5 to 2", "Error(Math Error: Low value must be less than high value.)") | ||||||
|  |  | ||||||
|  | @ -232,13 +232,12 @@ let combineShapesContinuousDiscrete = ( | ||||||
|           i, |           i, | ||||||
|           ( |           ( | ||||||
|             fn(continuousShape.xs[i], discreteShape.xs[j]), |             fn(continuousShape.xs[i], discreteShape.xs[j]), | ||||||
|             continuousShape.ys[i] *. discreteShape.ys[j] /. discreteShape.xs[j], |             continuousShape.ys[i] *. discreteShape.ys[j] /. Js.Math.abs_float(discreteShape.xs[j]), | ||||||
|           ), |           ), | ||||||
|         ) |> ignore |         ) |> ignore | ||||||
|         () |         () | ||||||
|       } |       } | ||||||
|       Belt.Array.set(outXYShapes, j, dxyShape) |> ignore |       Belt.Array.set(outXYShapes, j, dxyShape) |> ignore | ||||||
|       () |  | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | @ -246,12 +245,11 @@ let combineShapesContinuousDiscrete = ( | ||||||
|   |> E.A.fmap(XYShape.T.fromZippedArray) |   |> E.A.fmap(XYShape.T.fromZippedArray) | ||||||
|   |> E.A.fold_left( |   |> E.A.fold_left( | ||||||
|     (acc, x) => |     (acc, x) => | ||||||
|       XYShape.PointwiseCombination.combine( |       XYShape.PointwiseCombination.addCombine( | ||||||
|         (a, b) => Ok(a +. b), |  | ||||||
|         XYShape.XtoY.continuousInterpolator(#Linear, #UseZero), |         XYShape.XtoY.continuousInterpolator(#Linear, #UseZero), | ||||||
|         acc, |         acc, | ||||||
|         x, |         x, | ||||||
|       )->E.R.toExn("Error, unexpected failure", _), |       ), | ||||||
|     XYShape.T.empty, |     XYShape.T.empty, | ||||||
|   ) |   ) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -52,7 +52,7 @@ module Normal = { | ||||||
|     switch operation { |     switch operation { | ||||||
|     | #Add => Some(#Normal({mean: n1 +. n2.mean, stdev: n2.stdev})) |     | #Add => Some(#Normal({mean: n1 +. n2.mean, stdev: n2.stdev})) | ||||||
|     | #Subtract => Some(#Normal({mean: n1 -. n2.mean, stdev: n2.stdev})) |     | #Subtract => Some(#Normal({mean: n1 -. n2.mean, stdev: n2.stdev})) | ||||||
|     | #Multiply => Some(#Normal({mean: n1 *. n2.mean, stdev: n1 *. n2.stdev})) |     | #Multiply => Some(#Normal({mean: n1 *. n2.mean, stdev: Js.Math.abs_float(n1) *. n2.stdev})) | ||||||
|     | _ => None |     | _ => None | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  | @ -60,8 +60,8 @@ module Normal = { | ||||||
|     switch operation { |     switch operation { | ||||||
|     | #Add => Some(#Normal({mean: n1.mean +. n2, stdev: n1.stdev})) |     | #Add => Some(#Normal({mean: n1.mean +. n2, stdev: n1.stdev})) | ||||||
|     | #Subtract => Some(#Normal({mean: n1.mean -. n2, stdev: n1.stdev})) |     | #Subtract => Some(#Normal({mean: n1.mean -. n2, stdev: n1.stdev})) | ||||||
|     | #Multiply => Some(#Normal({mean: n1.mean *. n2, stdev: n1.stdev *. n2})) |     | #Multiply => Some(#Normal({mean: n1.mean *. n2, stdev: n1.stdev *. Js.Math.abs_float(n2)})) | ||||||
|     | #Divide => Some(#Normal({mean: n1.mean /. n2, stdev: n1.stdev /. n2})) |     | #Divide => Some(#Normal({mean: n1.mean /. n2, stdev: n1.stdev /. Js.Math.abs_float(n2)})) | ||||||
|     | _ => None |     | _ => None | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user